关于 堆栈指针的问题

当两个栈共享一存储区时,栈利用一维数组stack[1..n]表示,两栈顶指针为top[1]与top[2],则当栈1空时,top[1]为_____________,栈2空时,top[2]为_____________,栈满时为_____________。
前两空答案为 0 n+1
为什么不是1 n?

两种思路考虑:
1,正向思考
如果栈为空,则栈顶指针也应该指向数组的外面。
如果两个栈里面的元素都是1的时候,你的答案就是正确的了。

2,逆向思考
栈顶指针指向是是栈的top元素。
如果栈为空,栈顶指针应该不指向任何有效元素。

如果栈里面的元素是1的话,top[1] = 1;
因为return stack[top[1]]恰好就是数组的第一个元素。
这应该是题意要求的。

反之,假设LZ的答案是正确的。
栈空的时候,top[1] = 1;
那么栈有一个元素的时候,栈顶指针++,top[1] = 2;这就浪费了数组的一个存储空间了。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜