首页 > 试题广场 >

若数组S[1..n]作为两个栈S1和S2的存储空间,对任何一

[单选题]
若数组S[1..n]作为两个栈S1和S2的存储空间,对任何一个栈,只有当[1..n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()
  • S1的栈底位置为0,S2的栈底位置为n+1
  • S1的栈底位置为0,S2的栈底位置为n/2
  • S1的栈底位置为1,S2的栈底位置为n
  • S1的栈底位置为1,S2的栈底位置为1
两个栈的栈顶
一个在数组第一个元素,朝着数组索引增加方向增加
一个栈顶在数据最后一个元素,朝着数组索引减少方向增加
当两个栈的栈顶位置相差1时,数组被写满
发表于 2017-05-30 15:31:27 回复(8)
栈顶指针可以是0和n+1,但是题目问的是栈底的位置,0和n+1越界了,没法存储数据,所以a不对
发表于 2021-11-22 16:36:30 回复(0)
注意数组下标从1开始
初始分配:
栈S1往下标增大方向增长
栈S2往下标减小方向增长
数组写满情况:

发表于 2020-09-07 11:12:37 回复(0)
栈空间共享同一段数组内存空间,他们是在数组的两端,分别向中间靠拢,,只要栈的栈顶不碰面,这段空间就没满,可以一直用。
发表于 2020-01-14 11:22:43 回复(0)
共享栈的概念
发表于 2018-11-04 20:53:36 回复(0)
栈:先进后出,栈底的位置为该存储空间满的位置。
发表于 2017-08-27 14:05:19 回复(0)
ZTF头像 ZTF

两头并进,从数组头部和数组尾部,相向添加元素,当其中一个的下一个所要添的位置不为空的时候,就表示数组已满。

发表于 2019-03-08 09:56:53 回复(0)
都在中间不可以吗
发表于 2018-08-06 15:42:11 回复(1)
一开始没有看清题,正确的是C:S1的栈底位置为1,S2的栈底位置为n。
另外,如果,S1的栈底位置为0,那么S2的栈底位置为n-1。本题答案为n+1,明显错误。

发表于 2018-02-01 14:46:12 回复(2)
似乎都默认指针不能超出数组范围? A的0~n+1不合适,数组范围0~n-1 C的范围1~n是申请了n+1的空间,默认数组a[0]不使用? 不知道是不是这样的意思,求指教。
发表于 2019-12-29 11:07:25 回复(0)
A也可以吧?
发表于 2019-10-26 17:30:41 回复(0)
战地站定要分清
发表于 2023-03-23 14:29:08 回复(0)
共享栈
发表于 2022-11-15 00:46:42 回复(0)
注意数组下标从1开始
发表于 2022-08-21 10:23:27 回复(0)
共享栈
发表于 2022-08-03 15:39:37 回复(0)
共享栈,左半边从下标1处进栈,因此栈底位置为1;右半边从下标n处进栈,因此栈底为n
发表于 2022-08-01 10:18:46 回复(0)
这是个循环栈啊
发表于 2019-12-24 14:11:34 回复(0)
A和C都是可以的啊... A为什么错  栈底是0 先++再进栈。。
发表于 2019-11-04 23:22:44 回复(1)

  两个栈的栈顶 

  一个在数组第一个元素,朝着数组索引增加方向增加 

  一个栈顶在数据最后一个元素,朝着数组索引减少方向增加 

  当两个栈的栈顶位置相差1时,数组被写满 

发表于 2018-08-01 07:56:05 回复(0)
这个下标是从1开始吗。。
发表于 2017-11-21 21:41:23 回复(1)