若用数组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
如果S2的栈底位置设为n/2,我认为是S2只能占一半,不能认为S2栈的栈底就是S1的栈顶。
若用数组S[0. .n-1]做为两个栈S1和S2的共同存储结构,即S1和S2不能放在同一位置上,所以一个放在数组首部,一个放在数组尾部。将数组分为2部分,所以选A。如果有人想到选B的话,即他的思想为一个放在数组首部,一个放在数组中间,这种方法的话数组不能为S1和S2所共享。
这个题目也就这样,咋一看上去有点吓人
B C选项,如果一个栈空间小于n/2,另外一个栈空间大于n/2,那么虽然数组没有满,然而大的栈仍不能使用小的栈的空间,无法进行入栈操作!
题目说的很清楚,只有当S满的时候,才不能做入栈操作,意思是只要还有空间,两个栈随便你入,但是由于要判断S是否已满,得看两个栈的元素的个数之和是否等于n。比较好的结果方案当然是一个栈从数组一个元素开始往后入,另一个堆栈从数组最后一个元素往前入,判断时只要判断两个栈顶下标是否相加等于N即可,这就很好的利用的数组的特性!
把S2的栈底位置搞成n/2,那么s1就只能顶多占一半了,这样就算数组没满,s1已经不能入栈了
请写出以下代码执行输出:(构造函数、静态块执行顺序)
使用js实现数组的冒泡排序
如何理解PV、UV、IP
基于TCP协议建立连接和结束连接的过程
如果S2的栈底位置设为n/2,我认为是S2只能占一半,不能认为S2栈的栈底就是S1的栈顶。
若用数组S[0. .n-1]做为两个栈S1和S2的共同存储结构,即S1和S2不能放在同一位置上,所以一个放在数组首部,一个放在数组尾部。将数组分为2部分,所以选A。如果有人想到选B的话,即他的思想为一个放在数组首部,一个放在数组中间,这种方法的话数组不能为S1和S2所共享。
这个题目也就这样,咋一看上去有点吓人
B C选项,如果一个栈空间小于n/2,另外一个栈空间大于n/2,那么虽然数组没有满,然而大的栈仍不能使用小的栈的空间,无法进行入栈操作!
题目说的很清楚,只有当S满的时候,才不能做入栈操作,意思是只要还有空间,两个栈随便你入,但是由于要判断S是否已满,得看两个栈的元素的个数之和是否等于n。比较好的结果方案当然是一个栈从数组一个元素开始往后入,另一个堆栈从数组最后一个元素往前入,判断时只要判断两个栈顶下标是否相加等于N即可,这就很好的利用的数组的特性!
把S2的栈底位置搞成n/2,那么s1就只能顶多占一半了,这样就算数组没满,s1已经不能入栈了