《数据结构》链栈
发布时间:2020-12-15 05:59:07 所属栏目:安全 来源:网络整理
导读:链栈 链栈的存储结构与单链表的存储结构相同。 由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。 在链栈中注意指针的方向是从栈顶指向栈底。 #includestdio.h#define MA
链栈
链栈的存储结构与单链表的存储结构相同。
由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。
在链栈中注意指针的方向是从栈顶指向栈底。
#include<stdio.h> #define MAX 100 typedef 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("出栈的元素:%dn",b); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容