博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程实现栈的入栈/出栈操作
阅读量:6668 次
发布时间:2019-06-25

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

完整代码如下,其实队栈都只是链表的一种变化而已

#include 
#include
typedef struct student * PNode;typedef struct stacklink * PStack;typedef struct student{ int data; PNode next;}Node;typedef struct stacklink{ PNode zhandi; PNode top;}Stack;PStack push(PStack stack,int num){ PNode p=(PNode)malloc(sizeof(Node)); PNode temp; PStack q=stack; p->data=num; if(stack==NULL) { q=(PStack)malloc(sizeof(Stack)); q->zhandi=p; q->top=p; q->zhandi->next=NULL; q->top->next=NULL; return q; } temp=q->top; q->top=p; q->top->next=temp; return q;}void print(PStack stack){ if(stack==NULL) { printf("栈为空\n"); return; } PStack q=stack; PNode p=q->top; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n");}PStack pop(PStack stack){ if(stack==NULL) { printf("栈为空\n"); return NULL; } PStack q=stack; PNode temp=q->top; if(q->top->next==NULL) { printf("栈只有一个结点,删除完毕\n"); return NULL; } q->top=q->top->next; return q;}int main(void){ int flag; int num; PStack stack=NULL; while(1) { printf("选择入栈或者出栈:1为入栈,2为出栈,0为退出\n"); scanf("%d",&flag); if(flag==1) { printf("请选择要入栈的值:\n"); scanf("%d",&num); stack=push(stack,num); printf("打印入栈后的栈:\n"); print(stack); } else if(flag==2) { stack=pop(stack); printf("打印出栈后的队列:\n"); print(stack); } } q->top=q->top->next; return q;}int main(void){ int flag; int num; PStack stack=NULL; while(1) { printf("选择入栈或者出栈:1为入栈,2为出栈,0为退出\n"); scanf("%d",&flag); if(flag==1) { printf("请选择要入栈的值:\n"); scanf("%d",&num); stack=push(stack,num); printf("打印入栈后的栈:\n"); print(stack); } else if(flag==2) { stack=pop(stack); printf("打印出栈后的队列:\n"); print(stack); } else break; } return 0;}

 

转载于:https://www.cnblogs.com/longzhongren/p/4418323.html

你可能感兴趣的文章
移位操作发现的悲剧
查看>>
win10 nodejs指定ionic版本安装(npm方式)
查看>>
JumpServer跳板机
查看>>
mongodb 与 c++ 的配合使用
查看>>
ios 对齐属性
查看>>
[CDQ分治][Treap][树状数组]JZOJ 4419 Hole
查看>>
javascript -- 将数组转换为字符串:join()
查看>>
HDU - 1078 DP + 记忆化搜索
查看>>
Linux基础命令详解
查看>>
python 函数1
查看>>
WPF Step By Step 系列-Prism框架在项目中使用
查看>>
forms组件
查看>>
第十周进度条
查看>>
源码安装node8.11.1
查看>>
JAVA HTTP通信
查看>>
bootanimation 动画替换调试
查看>>
[LeetCode] Rectangle Overlap
查看>>
css3 box-sizing属性
查看>>
改变表单元素的外观
查看>>
【批处理学习笔记】第十七课:截取字符串
查看>>