《数据结构》链栈

来源:互联网 发布:中国农历闰年的算法 编辑:程序博客网 时间:2024/05/22 09:38
链栈
链栈的存储结构与单链表的存储结构相同。
由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。
在链栈中注意指针的方向是从栈顶指向栈底。
#include<stdio.h>#define MAX 100typedef struct StackNode{int data;struct StackNode *next;}StackNode,*LinkStack;int InitStack(LinkStack &S){S=NULL;//将栈顶指针置空return 1; }int Push(LinkStack &S,int e){//元素e入栈struct StackNode *p;p=new StackNode;p->data=e;p->next=S;S=p;//链栈要注意指针的方向是从栈顶指向栈底的 }int Pop(LinkStack &S,int &e){if(S==NULL){return 0;}e=S->data;struct StackNode *q;q=new StackNode;q=S;S=S->next;delete q;return 1;}void TraveStack(LinkStack S){struct StackNode *p;p=S;while(p){printf("%d ",p->data);p=p->next;}printf("\n");}int main(){LinkStack S;if(InitStack(S)){printf("初始化成功!\n");}else{printf("初始化失败!\n");}//int n;//printf("请输入栈的元素个数:");//scanf("%d",&n);//for(int i=0;i<n;i++){//int e;//printf("请输入栈的元素:");//scanf("%d",&e);//Push(S,e);//}////printf("遍历栈:\n");//TraveStack(S);printf("请输入一个元素:");int a,b;scanf("%d",&a);Push(S,a);Pop(S,b);printf("出栈的元素:%d\n",b);}


0 0
原创粉丝点击