1.共享栈
1.1共享栈的定义
共享栈其实就是两个栈,合起来,共享一个数组存数据。这样子的好处就是,两个栈同一个空间。当栈1的数据多,栈2数据比较少,就可以这样子共享,对空间的浪费就会减少。当栈1为空,top1 = -1;栈2为空,top2 = n;
关键:有两个栈底,和两个栈顶top1,top2,从数组两端向中间靠拢。当 top1 + 1 = top2 的时候为栈满。
1.2共享栈结构
/*两栈共享空间结构*/
typedef struct
{
int data[MAXSIZE];
int top1; // 栈1栈顶指针
int top2; //栈2栈顶指针
} SqDoubleStack;
1.3共享栈插入
这个和顺序栈不同的就是,要指定,是栈1还是栈2插入。所以这里就有一个stackNumber来表示栈的参数。
/*插入元素e为新的栈顶元素*/
Status Push (SqDoubleStack *s, int e, int stackNumber)
{
if ( s->top1+1 == s->top2) //栈已满,不能再push新的元素
return ERROR;
if (stackNumber ==