数据结构——栈
来源:互联网 发布:云计算产业 编辑:程序博客网 时间:2024/06/08 02:45
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef struct Node{int data;struct Node *next;}NODE,*PNODE;typedef struct Stack{PNODE top;PNODE bottom;}STACK,*PSTACK;void init(PSTACK ps);void push(PSTACK ps,int data);void list(PSTACK ps);bool pop(PSTACK ps,int *val);bool empty(PSTACK ps); int main(){STACK S;int val;init(&S);push(&S,1);push(&S,2);push(&S,3);push(&S,4);push(&S,5);list(&S);if(pop(&S,&val)){printf("出栈的值为:%d\n",val);printf("出栈队列后:\n");}list(&S);return 0;} void init(PSTACK ps){ps->top=(PNODE)malloc(sizeof(NODE));if(ps->top==NULL){printf("动态内存分配失败!");exit(-1); }else{ps->bottom=ps->top;}}void push(PSTACK ps,int data){PNODE p=(PNODE)malloc(sizeof(NODE));//入栈需要动态分配一个结点 p->data=data;p->next=ps->top;ps->top=p;}void list(PSTACK ps){PNODE p=ps->top;//遍历不需要动态态分配一个结点 while(p!=ps->bottom){printf("%d ",p->data); //注意易错点,遍历的时候改变的是p ,top不能变!! p=p->next;}printf("\n");}bool pop(PSTACK ps,int *val){if(empty(ps)){printf("出栈失败!\n"); return false;}else{PNODE p=ps->top;ps->top=p->next;*val=p->data;free(p); p=NULL;return true;}}bool empty(PSTACK ps){if(ps->top==ps->bottom){return true;}else return false;}
阅读全文
0 0
- 数据结构——基本数据结构之栈
- 数据结构——基本数据结构之栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- Chapter8 NP-complete problems 课后习题8.3
- 家里有孕妇老人该如何选择净水器
- 欢迎使用CSDN-markdown编辑器
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- 无线网络覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学。 现在学校给了他一个机
- 数据结构——栈
- CC3220学习笔记---UART的使用(翻译)
- vxworks 内核 shell 用法详解
- angularde directive
- java删除文件
- c#:未将对象引用设置到对象的实例--可能出现的问题总结(转)
- Ubuntu17.0下安装Hadoop
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- Android开发架构的一些思考