单选题设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。AS1的栈底位置为0,S2的栈底位置为n-1BS1的栈底位置为0,S2的栈底位置为n/2CS1的栈底位置为0,S2的栈底位置为nDS1的栈底位置为0,S2的栈底位置为1
单选题
设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。
A
S1的栈底位置为0,S2的栈底位置为n-1
B
S1的栈底位置为0,S2的栈底位置为n/2
C
S1的栈底位置为0,S2的栈底位置为n
D
S1的栈底位置为0,S2的栈底位置为1
参考解析
解析:
两栈共享空间首先两个栈是相向增长的,栈底应该分别指向两个栈中的第一个元素的位置,并注意C++中的数组下标是从0开始的。
相关考题:
●设有一个顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s4,s6,s5,s1,则顺序栈的容量至少应为 (35) 。(35) A.2B.3C.4D.5
假设用一个长度为50的数组(数组元素的下标为0~49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有( )个元素。
一个栈(Stack)对象有三种状态:S1——栈空;S2——栈非空也非满;S3——栈满。则各个状态的条件如下:S1:(t0)创建栈对象时初始化,这是系统做的(t1)在S2状态下执行置空运算setEmpty()(t2)在S3状态下执行置空运算setEmpty()(t3)在S2状态下执行出栈运算Pop()S2:(t4)在S1状态下执行进栈运算Push()(t5)在S3状态下执行出栈运算Pop()S3:(t6)在S2状态下执行进栈运算Push()为简化问题,假设栈Stack的容量为2,栈元素的数据类型为整数。根据题意,画出栈对象的状态迁移图;
设用数组A[1,n]作为两个栈S1、S2的共用存储空间,对任一个栈,只有当数组A[1,n]全满时才不作入栈操作,则分配这两个栈空间的最佳方案是()。A.S1的栈底位置设为1,S2的栈底位置设为nB.S1的栈底位置设为n/2,S2的栈底位置设为n/2+1C.S1的栈底位置设为1,S2的栈底位置设为n/2D.S1的栈底位置设为n/2,S2的栈底位置设为1
设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。A、S1的栈底位置为0,S2的栈底位置为n-1B、S1的栈底位置为0,S2的栈底位置为n/2C、S1的栈底位置为0,S2的栈底位置为nD、S1的栈底位置为0,S2的栈底位置为1
假定利用数组a[N]顺序存储一个栈,用top表示栈顶元素的下标位置,用top= =-1表示栈空,用top= =N - 1表示栈满,则该数组所能存储的栈的最大长度为()A、N - 1B、NC、N+1D、N十2
设顺序栈S中有2n个元素,从栈顶到栈底的元素依次为a2n,a2n-1,…,a1,要求通过一个循环队列重新排列栈中元素,使得从栈顶到栈底的元素依次为a2n,a2n-2,…,a2,a2n-1,a2n-3,…,a1,请设计算法实现该操作,要求空间复杂度和时间复杂度均为O(n)。
若用数组S[0..n-1]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。A、S1的栈底位置为0,S2的栈底位置为n-1B、S1的栈底位置为0,S2的栈底位置为n/2-1C、S1的栈底位置为1,S2的栈底位置为nD、S1的栈底位置为1,S2的栈底位置为n/2
单选题假定利用数组a[n]顺序存储一个栈,用top表示栈顶指针,用top==n+l表示栈空,该数组所能存储的栈的最大长度为n,则表示栈满的条件是()Atop == -1Btop == 0Ctop>lDtop == 1
单选题若用数组S[0..n-1]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。AS1的栈底位置为0,S2的栈底位置为n-1BS1的栈底位置为0,S2的栈底位置为n/2-1CS1的栈底位置为1,S2的栈底位置为nDS1的栈底位置为1,S2的栈底位置为n/2
填空题若数组s[0..n-1]为两个栈s1和s2的共用存储空间,仅当s[0..n-1]全满时,各栈才不能进行栈操作,则为这两个栈分配空间的最佳方案是:s1和s2的栈顶指针的初值分别为()。