链栈
来源:互联网 发布:python升级到2.7 编辑:程序博客网 时间:2024/05/16 05:37
#include<cstdio>#include<cstdlib>#include<iostream>using namespace std;typedef int ElemType;typedef struct LinkNode{ElemType data;LinkNode *next;}*LiStack,StackNode;//数据链的结构 typedef struct {StackNode *Top;ElemType count;}LinkStackTop;//存储数据的链 void InitStack(LinkStackTop *S){S->Top = (LiStack)malloc(sizeof(LinkNode));//初始栈顶地址为栈底 if(!S->Top) cout<<"已经是空栈"<<endl;else{S->Top=NULL;S->count=0;}}void Push(LinkStackTop *S,ElemType e){LiStack p=(LiStack)malloc(sizeof(LinkNode));//缓存入栈数据的指针 ,便于更新栈顶数据 p->data=e;p->next=S->Top;S->Top=p;//更新栈顶数据 S->count++;//统计数据总数 } void Pop(LinkStackTop *S,ElemType e){LiStack p;e=S->Top->data;p=S->Top;S->Top=S->Top->next;free(p);S->count--;}void ClearStack(LinkStackTop *S){StackNode *p,*q;p=S->Top;while(p){q=p;p=p->next;free(q);}S->count=0;}void StackEmpty(LinkStackTop *S){if(S->count==0)cout<<"栈空"<<endl;elsecout<<"栈不为空"<<endl;}void StackLength(LinkStackTop *S){cout<<S->count<<endl;}void GetTop(LinkStackTop *S,ElemType e){if(S->Top==NULL)cout<<"栈为空"<<endl;else cout<<S->Top->data<<endl;}void StackTreaver(LinkStackTop *S){LiStack p;p=S->Top;while(p){cout<<p->data<<endl;p=p->next;}}int main(){int e;LinkStackTop s;InitStack(&s); for(int j=1;j<=10;j++) Push(&s,j); cout<<"输出栈中元素:"<<endl; StackTreaver(&s); cout<<"栈是否为空"<<endl; StackEmpty(&s); cout<<"栈长度"<<endl; StackLength(&s); Pop(&s,e); cout<<"栈是否为空"<<endl; StackEmpty(&s); cout<<"栈长度"<<endl; StackLength(&s); GetTop(&s,e); return 0;}
阅读全文
0 0
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- 链栈
- C++中智能指针的设计和使用
- 庆祝成为CSDN博客专家
- Unity自定义UI组件(十二) 条形图篇
- LeetCode 13. Roman to Integer -- 罗马数字转整数
- Java_8 字符串操作
- 链栈
- (bzoj 3209 花神的数论题)<>
- UESTC
- WinForm通用自动更新器AutoUpdater项目实战
- prototype、proto和constructor
- Java打印等腰三角形
- easyui加载datagrid和treegrid的几种json数据格式
- hdu 6106 Classes 2017多校第六场1011签到题 容斥原理
- 操作系统的学习(1)——启动,中断,异常和系统调用。