跳到主要内容

四、共享栈

1. 定义

两个栈共享同一片内存空间,从两边往中间增长,可有效节省内存。

2. 核心规则

  • 初始化:0号栈(左栈)栈顶指针top0 = -1;1号栈(右栈)栈顶指针top1 = MaxSize
  • 栈满条件top0 + 1 == top1(两栈顶指针相邻)

3.动态演示

利用栈底位置相对不变的特性,可以让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。

核心特性

  1. top0: 栈0栈顶,初始为 -1
  2. top1: 栈1栈顶,初始为 MaxSize
  3. 栈满条件: top0 + 1 == top1 (两指针相遇)。

请尝试分别向两个栈 Push 元素,观察它们是如何向中间靠拢的,直到发生栈满 (Stack Overflow)

共享栈 (Shared Stack)

就绪
0
1
2
3
4
5
6
7
8
9
top0
top1
🟦 栈 0 (从左往右)
栈 1 (从右往左) 🟧

4. 共享栈代码示例

C++
Output:
Click "Run" to see output...

💬 留下你的问题或见解