数据结构之共享栈
来源:互联网 发布:苹果4s有4g网络吗 编辑:程序博客网 时间:2024/06/11 08:50
数据结构之共享栈
两个栈的栈底为一维数组的两端。
栈0的栈底为-1
栈1的栈底为n
判断栈满的条件为:
两个栈的栈顶相差1
#include<stdio.h>#include<stdbool.h>#define maxsize 20#define ElemType inttypedef struct{ int stack[maxsize]; int top[2];}stk;stk s;//------------------------入栈---------------------------int push(int i,int x) // i代表共享栈的栈号,x表示入栈元素{ if(i<0||i>1) { printf("栈号输入错误!\n"); return 0; } if((s.top[1]-s.top[0])==1) { printf("栈满!\n"); return 0; } switch(i) { case 0:s.stack[++s.top[0]]=x; return 1; break; case 1:s.stack[--s.top[1]]=x; return 1; break; }}//push//-------------------退栈---------------int pop(int i){ if(i<0||i>1) { printf("栈号输入错误!\n"); return 0; } switch(i) { case 0: if(s.top[0]==-1) { printf("栈空\n"); return 0; } return s.stack[s.top[0]--]; case 1: if(s.top[1]==maxsize) { printf("栈空\n"); return 0; } return s.stack[s.top[1]++]; }}//pop//----------------------打印相应的栈------------------------void print(){ int j=0; for(j=0;j<maxsize;j++) { printf("%d ",s.stack[j]); } printf("\n");}int main(){ s.top[0]=-1; s.top[1]=maxsize; int i=0; i=push(0,1); if(i==1) printf("成功向栈0压入元素!\n"); print(); i=push(0,3); if(i==1) printf("成功向栈0压入元素!\n"); print(); i=push(1,2); if(i==1) printf("成功向栈1压入元素!\n"); print(); i=push(1,4); if(i==1) printf("成功向栈1压入元素!\n"); print(); i=pop(0); printf("删除栈0元素%d!\n",i); i=pop(1); printf("删除栈1元素%d!\n",i);}
运行结果:
阅读全文
0 0
- 数据结构之共享栈
- 数据结构之共享栈(堆存储)
- 数据结构之---C语言实现共享栈
- 数据结构之共享栈(顺序存储)—改编《大话数据结构》
- 数据结构与算法之——两栈共享存储空间
- 数据结构:两栈共享存储空间
- 数据结构:两栈共享存储空间
- C++数据结构:栈——顺序栈实现的之二:两栈共享空间
- 数据结构--栈--两栈共享空间
- 【数据结构】两栈共享空间_DoubleStack
- 数据结构-共享栈的基本操作实现
- c++数据结构 共享栈的实现
- 数据结构_线性表_顺序存储之1顺序栈2共享栈_链式存储之链栈_栈的应用举例
- java数据结构之栈
- 数据结构之顺序栈
- 数据结构之链栈
- 数据结构之栈
- 数据结构复习之【栈】
- 十年后,程序员还会有今天的收入吗?
- win7开启虚拟网卡 cmd
- Hibernate与 MyBatis的比较
- Redis
- 布线时快捷添加过孔的方法
- 数据结构之共享栈
- OSI模型
- jsoup教程005-从一个文件加载一个文档
- 仿微信@好友功能 輸入@跳转、删除整块
- bzoj3343 分块
- 网狐荣耀版手机端分享时出现“由于不支持的分享类型,无法分享到微信“的解决办法
- requests http短连接压测工具
- HDOJ-1001
- sam文件学习1