数据结构-栈、队列-栈
若用数组S[0. .n-1]做为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是
A.S1的栈底位置为0,S2的栈底位置为n-1
B.S1的栈底位置为0,S2的栈底位置为n/2
C.S1的栈底位置为1,S2的栈底位置为n/2
正确答案是 A
资深90后
2018-10-13 11:11:42
如果S2的栈底位置设为n/2,我认为是S2只能占一半,不能认为S2栈的栈底就是S1的栈顶。
心意
2018-10-13 11:11:36
若用数组S[0. .n-1]做为两个栈S1和S2的共同存储结构,即S1和S2不能放在同一位置上,所以一个放在数组首部,一个放在数组尾部。将数组分为2部分,所以选A。如果有人想到选B的话,即他的思想为一个放在数组首部,一个放在数组中间,这种方法的话数组不能为S1和S2所共享。
老干妈拌面
2018-10-13 11:11:28
这个题目也就这样,咋一看上去有点吓人
落地成盒
2018-10-13 11:11:23
B C选项,如果一个栈空间小于n/2,另外一个栈空间大于n/2,那么虽然数组没有满,然而大的栈仍不能使用小的栈的空间,无法进行入栈操作!
落地98K
2018-10-13 11:11:06
题目说的很清楚,只有当S满的时候,才不能做入栈操作,意思是只要还有空间,两个栈随便你入,但是由于要判断S是否已满,得看两个栈的元素的个数之和是否等于n。比较好的结果方案当然是一个栈从数组一个元素开始往后入,另一个堆栈从数组最后一个元素往前入,判断时只要判断两个栈顶下标是否相加等于N即可,这就很好的利用的数组的特性!
企鹅哥哥
2018-10-13 11:10:57
把S2的栈底位置搞成n/2,那么s1就只能顶多占一半了,这样就算数组没满,s1已经不能入栈了
加载更多