数据结构--栈--两栈共享空间
2016-11-28 20:59
253 查看
如何将两个栈使用同一个内存空间
将一个栈的栈底为数据的终端,即下标为0
另一个栈的栈底为数据的末端,即下标为n-1
如下图:
![](http://img.blog.csdn.net/20161128204949660?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
/*两栈共享空间结构*/
typedef struct
{
SElemType data[MAXSIZE];
int top1; /*栈1 栈顶指针 */
int top2; /* 栈2 栈顶指针*/
}SqDoubleStack;
根据图可得:
栈满的条件是:
栈1为空,栈2为满top2 = 0;
栈2位空,栈1为空top1 = n - 1;
两栈见面时,即top1 + 1 = top2;
将一个栈的栈底为数据的终端,即下标为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;
相关文章推荐