单个数组 A[1....MAXSIZE] 用于实现两个堆栈。两个堆栈从数组的两端生长。变量top1和top2(top1 < top2)指向每个堆栈中最顶层元素的位置。如果要高效利用空间,判断栈满的条件?
最佳答案
当两个顶部碰撞时,两个堆栈都已满。
[e1|e2|e3|_|_|_|_|f2|f1]
| |
top1 top2
如果top1+1 == top2
,这意味着堆栈已满
或者当然如果 top2==0
或 top1==MAXSIZE-1
请注意,两个堆栈共享相同的空间。因此,如果您的数组已满,则两个堆栈都已满,否则两个堆栈中的任何一个都可能再容纳一个元素。 这解释了为什么上述条件适用于两个堆栈。
关于c - 我正在尝试解决这个问题,我已经尝试过,但我不知道如何通过代码或逻辑解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58232070/