题目
【判断题】两顺序栈共享空间,也存在空间溢出问题。A. 对B. 错
【判断题】两顺序栈共享空间,也存在空间溢出问题。
A. 对
B. 错
题目解答
答案
B. 错
解析
考查要点:本题主要考查顺序栈共享空间时的溢出问题,需理解顺序栈的存储结构及共享空间的实现方式。
解题核心思路:
顺序栈共享空间时,两个栈通常采用双向增长的方式(一个栈从左向右扩展,另一个栈从右向左扩展)。虽然共享空间提高了利用率,但当两个栈的栈顶指针相遇时,即使总空间未满,也可能无法继续压入元素,导致溢出。
破题关键点:
- 共享空间的实现机制:两个栈的栈顶指针可能相互制约,导致局部空间耗尽。
- 溢出条件:当两个栈的扩展方向冲突时,即使总空间未满,也可能引发溢出。
顺序栈共享空间时,通常采用以下方式实现:
- 初始化:两个栈共享一个固定大小的数组,栈1的栈顶指针
top1初始为数组起始位置(如-1),栈2的栈顶指针top2初始为数组末尾位置(如n)。 - 压入元素:
- 栈1从左向右扩展:
top1++。 - 栈2从右向左扩展:
top2--。
- 栈1从左向右扩展:
- 溢出条件:当
top1 >= top2时,两个栈无法继续压入元素,即使数组中仍有空闲位置。
举例说明:
假设数组大小为5,初始时栈1的 top1 = -1,栈2的 top2 = 5。若栈1压入3个元素(top1 = 2),栈2压入2个元素(top2 = 3),此时数组中仍有位置3未被使用。但由于 top1 + 1 = 3 和 top2 - 1 = 2 产生冲突,两个栈均无法继续压入元素,导致溢出。