数据结构之栈
来源:互联网 发布:sql select a,b,c 编辑:程序博客网 时间:2024/06/04 20:01
# include <stdio.h># include <stdlib.h>typedef struct Node{int val;struct Node * pNext;}NODE,* PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK,* PSTACK;void init(PSTACK);//初始化栈void push(PSTACK,int);//压栈bool pop(PSTACK,int *);//出栈void clear(PSTACK);//清空栈bool empty(PSTACK);//检查是否栈空void traverse(PSTACK);//遍历栈后输出int main(){int val;STACK s;init(&s);push(&s,1);push(&s,2);push(&s,3);push(&s,4);push(&s,5);push(&s,6);push(&s,7);traverse(&s);if (pop(&s,&val))printf("出栈成功,出栈的数据为:%d\n",val);if (pop(&s,&val))printf("出栈成功,出栈的数据为:%d\n",val);if (pop(&s,&val))printf("出栈成功,出栈的数据为:%d\n",val);traverse(&s);clear(&s);traverse(&s);if (empty(&s))printf("所有数据出栈成功,现在栈为空!\n");return 0;}void init(PSTACK ps){ps->pBottom=(PNODE)malloc(sizeof(NODE));ps->pBottom->pNext=NULL;ps->pTop=ps->pBottom;}void push(PSTACK ps,int val){PNODE pNew=(PNODE)malloc(sizeof(NODE));pNew->val=val;pNew->pNext=ps->pTop;ps->pTop=pNew;}void traverse(PSTACK ps){PNODE p=ps->pTop;while(ps->pBottom!=p){printf("%d ",p->val);p=p->pNext;}printf("\n");}bool empty(PSTACK ps){if (ps->pBottom==ps->pTop)return true;return false;}bool pop(PSTACK ps,int * pVal){if (empty(ps))return false;PNODE p=ps->pTop;* pVal=p->val;ps->pTop=ps->pTop->pNext;p=NULL;return true;}void clear(PSTACK ps){PNODE p;while(ps->pBottom!=ps->pTop){p=ps->pTop;ps->pTop=ps->pTop->pNext;free(p);}}
0 0
- java数据结构之栈
- 数据结构之顺序栈
- 数据结构之链栈
- 数据结构之栈
- 数据结构复习之【栈】
- 数据结构之栈
- 数据结构之栈
- 数据结构之栈实现
- 数据结构学习之栈
- 数据结构之栈
- 数据结构之栈
- 复习数据结构之栈
- 数据结构之栈
- 数据结构之栈
- 大话数据结构之栈
- 数据结构之顺序栈
- 数据结构之链式栈
- 数据结构之顺序栈
- 编写计算“两个整数的最大公约数”程序
- ListControl自动高亮显示下一行
- AFHTTPClient本地文件数据失败可能原因之一
- 恢复被rm意外删除数据文件
- jquery实现上传图片的预览
- 数据结构之栈
- 设计模式-模板方法
- Android 游戏项目中Manifest文件中的4个重要设置
- ASP.NET Web应用程序与ASP.NET Web服务应用程序有什么区别
- Codeforces Round #218 (Div. 2) / 371B Fox Dividing Cheese (想法题)
- jQuery hover事件
- JPA 注解
- 汽车4S店顾客满意度调研-研究方法
- 计算机的发展历史