如何将两个栈使用同一个内存空间
将一个栈的栈底为数据的终端,即下标为0
另一个栈的栈底为数据的末端,即下标为n-1
如下图:
/*两栈共享空间结构*/
typedef struct
{
SElemType data[MAXSIZE];
int top1; /*栈1 栈顶指针 */
int top2; /* 栈2 栈顶指针*/
}SqDoubleStack;
根据图可得:
栈满的条件是:
栈1为空,栈2为满top2 = 0;
栈2位空,栈1为空top1 = n - 1;
两栈见面时,即top1 + 1 = top2;