最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
两个栈共用一个顺序存储空间的代码
时间:2022-07-02 10:59:27 编辑:袖梨 来源:一聚教程网
#include
#define STACK_INIT_SIZE 10//存储的初始分配
struct Dblstack{
int *base1;
int *base2;
int *top1;
int *top2;
int stacksize;//当前分配的存储空间,以元素为单位
};
int Initstack(Dblstack &s)
{//构造一个空的顺序栈s
s.base1=new int[STACK_INIT_SIZE];
if(!s.base1){cout<<"申请内存失败!n";return 0;}
s.top1=s.base1+1;
s.stacksize=STACK_INIT_SIZE;
s.base2=s.base1+s.stacksize;
s.top2=s.base2-1;
return 1;
}
int emptystack(Dblstack &s,int i)
{//判断栈是否为空,是返回1,否则返回0
if(i==1&&s.top1==s.base1+1||i==2&&s.top2==s.base2-1)
return 1;
else return 0;
}
int fullstack(Dblstack &s)
{//判断栈是否已经满,若栈满则返回1否则返回0
if(s.top1==s.top2) return 1;
else return 0;
}
int push(Dblstack &s,int i,int x)
{//插入元素x作为新的栈顶元素
if(fullstack(s)){ cout<<"栈满n"; return 0;}
else{
if(i==1) {cout<<"插入操作成功!nn"; *s.top1++=x; }
if(i==2) {cout<<"插入操作成功!nn"; *s.top2--=x; }
}return 1;
}
int pop(Dblstack &s,int i,int &x)
{//若栈不为空则删除i栈中的栈顶元素用x返回,否则返回0
if(emptystack(s,i)) return 0;
else{
if(i==1) {cout<<"出栈成功!出栈元素为:"; x=*--s.top1; }
if(i==2) {cout<<"出栈成功!出栈元素为:"; x=*++s.top2; }
}return 1;
}
int gettop(Dblstack &s,int i,int &x)
{//若栈不为空,则用x返回栈顶元素,并返回真,否则返回0
if(emptystack(s,i)) return 0;
else{
if(i==1) { x=*(s.top1-1); cout<<"n出栈成功!栈顶为:"; }
if(i==2) { x=*(s.top2+1); cout<<"n出栈成功!栈顶为:"; }
}return 1;
}
int clearstack( Dblstack &s)
{//若栈为空返回1,否则将栈置为空后返回1
if(emptystack(s,1)&&emptystack(s,
相关文章
- 《原神》5.2卡池抽取建议 11-14
- 《原神》5.2版本新怪物介绍 11-14
- 《原神》希诺宁增伤触发方法 11-14
- 《原神》循音觅奇活动入口 11-14
- 《原神》循音觅奇兑换码获取方法 11-14
- 《原神》花羽会活动飞行技巧介绍 11-14
热门栏目
-
php教程
php入门 php安全 php安装 php常用代码 php高级应用 -
asp.net教程
基础入门 .Net开发 C语言 VB.Net语言 WebService -
手机开发
安卓教程 ios7教程 Windows Phone Windows Mobile 手机常见问题 -
css教程
CSS入门 常用代码 经典案例 样式布局 高级应用 -
网页制作
设计基础 Dreamweaver Frontpage js教程 XNL/XSLT -
办公数码
word excel powerpoint 金山WPS 电脑新手 -
jsp教程
Application与Applet J2EE/EJB/服务器 J2ME开发 Java基础 Java技巧及代码