关注作者:Aqu-蓝空
描述
利用链表对栈的将实现基本操作:
- 入栈
- 出栈
- 打印
代码
#include#include #include #define SIZE sizeof(StackNode) typedef struct StackNode { int data; struct LNode *next; }StackNode,*linkstack; //功能:入栈操作! void push(linkstack s,int x) { linkstack p; p=(linkstack)malloc(SIZE); p->data=x; p->next=s->next; s->next=p; printf("进栈成功!n"); printf("栈中的元素:n"); } //功能:出栈操作! void pop(linkstack s,int x) { linkstack p; if(s->next==NULL) printf("栈为空,无法进行出栈操作!n"); else { p=s->next; x=p->data; s->next=p->next; free(p); printf("出栈成功!n"); printf("出栈的元素为%d。栈内的元素为n",x); } } //功能:打印栈中的元素! void outputstack(linkstack s) { linkstack p; p=s->next; while(p) { printf("%d",p->data); p=p->next; printf("n"); } } //主函数 void main() { linkstack s; int x,n; s=(linkstack)malloc(SIZE); s->next=NULL; printf("链栈的功能操作目录:n"); printf("------------------n"); printf("1.进栈 2.出栈 0.退出操作!n"); while(1) { printf("n"); printf("请选择功能操作(该选择功能如果输入别的数字,程序仍然会继续执行该语句!):"); scanf("%d",&n); switch(n) { case 1: printf("请输入进栈的元素:"); scanf("%d",&x); push(s,x); outputstack(s); break; case 2: pop(s,x); outputstack(s); break; case 0: exit(0); } } }



