最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
两个栈共用一个顺序存储空间的代码
时间:2008-04-26 编辑:简简单单 来源:一聚教程网
#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,
-
上一个: 通用库Map模板类
-
下一个: 通用循环缓冲区类(c++版)
相关文章
- 杀戮空间2 Killing Floor 2 Steam商店半价出售 06-21
- PS平面图怎么制作成立体空间感效果 06-19
- 选择网络虚拟空间时一定要注意的一些事项 05-30
- 富含空间感的作品设计技巧 04-22
- 星际火线迷失空间精英难度第一关怎么通关?迷失空间攻略 01-18
- K歌达人APP我的空间进入方法分享 11-17
热门栏目
-
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技巧及代码