双栈共享一个栈空间
为什么要使用共享栈:可能某一个栈空间不够用,总是需要扩容,而另一个栈总是有空间闲置,将两个栈的空间共享。
解决方式:将编号为 0 和 1 的两个栈存放于一个数组空间 V [m]中,栈底分别处于数组的两端。当第 0 号栈的栈顶指针 top [0] 等于-1 时该栈为空,当第 1 号栈的栈顶指针 top [1] 等于 m 时该栈为空。两个栈均从两端向中间增长。

代码如下:
#include<iostream>
#include<stack>
using namespace std;
#define maxSize 2
typedef struct{
int top[2]; //栈顶指针
int bot[2]; //栈底指针
int elem[maxSize];
}DblStack; //共享栈
//初始化
bool initStack(DblStack& s){
s.bot[0] = s.top[0] = -1;
s.bot[1] = s.top[1] = maxSize;
return true;
}
//判空
bool isEmpty(DblStack& s,int i){
return s.top[i] == s.bot[i];
}
//判满
bool isFull(DblStack& s){
return s.top[0] + 1 == s.top[1];
}
//入栈
bool push(DblStack& s,int x,int i){
if(isFull(s)) return false;
if(i == 0) s.elem[++ s.top[0]] = x;
else s.elem[-- s.top[1]]= x;
return true;
}
//出栈
bool pop


2227

被折叠的 条评论
为什么被折叠?



