博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的链式存储
阅读量:4137 次
发布时间:2019-05-25

本文共 1122 字,大约阅读时间需要 3 分钟。

 #include<stdio.h>

#include<malloc.h>

typedef struct Lnode{

 int data;
 struct Lnode *next;
}Lnode,*LinkStack;//定义链栈

void InitStack(LinkStack &s)

{
 s=(LinkStack)malloc(sizeof(Lnode));
 s->next=NULL;
 printf("请输入6个栈元素:");
 scanf("%d",&s->data);
 for(int i=0;i<5;i++)
 {
  LinkStack p=(LinkStack)malloc(sizeof(Lnode));
  scanf("%d",&p->data);
  p->next=s;
  s=p;//s指向栈顶,随元素个数的变化而改变
 }
}//初始化栈

int StackEmpty(LinkStack s)

{
 if(s==NULL) return 1;//栈空
 else return 0;
}//判断链栈是否为空

void Pop(LinkStack &s, int &e)

{
 if(!s) printf("error/n");
 e=s->data;
 LinkStack p=s;
 s=s->next;
 free(p);
}//删除链栈中的元素

void Print(LinkStack s)

{
 while(!StackEmpty(s))
 {
  int e;
  Pop(s,e);
  printf("%d ",e);
 }
}//输出栈中元素

void Push(LinkStack &s, int e)

{
 LinkStack p=(LinkStack)malloc(sizeof(Lnode));
 p->data=e;
 p->next=s;
 s=p;//指向栈顶元素
}//向栈顶插入元素

void GetTop(LinkStack s,int &e)

{
 if(!s) printf("error1/n");
 e=s->data;
}//取栈顶元素

int StackLength(LinkStack s)

{
 int j=0;
 while(s)
 {
  s=s->next;
  j++;
 }
 return j;
}//求链栈的长度

main()

{
 int a;
 int b;
 LinkStack s;
    InitStack(s);
    GetTop( s,a);
    Push(s,99);
    b=StackLength(s);
    Print(s);
 printf("栈顶元素:%d",a);
        printf("栈的长度:%d",b);
 return 0;
}

 

 

转载地址:http://scmvi.baihongyu.com/

你可能感兴趣的文章
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
如何实现a===1 && a===2 && a===3返回true?
查看>>