首页 > 试题广场 >

若一个栈以向量 V[] 存储,初始栈顶指针 top 为 n+

[单选题]
若一个栈以向量 V... 存储,初始栈顶指针 top 为 n+1,则下面x入栈的正确操作是()
  • top=top+1; V[top]=x
  • V[top]=x; top=top+1
  • top=top-1; V[top]=x
  • V[top]=x; top=top-1
推荐
根据栈的操作可知。
发表于 2018-08-13 20:33:40 回复(0)
1.如果初始化top=-1,则栈底地址到栈顶是由小到大的,这样top=-1的时候才表示栈为空
2.如果初始化top=n+1,(n是表示栈的容量),则栈底地址到栈顶是由大到小的,这样top=n+1的时候才表示栈为空
题目显然符合2情况,所以top - -才符合栈顶指针向上移动
发表于 2019-10-11 20:14:30 回复(2)
发表于 2018-11-04 22:16:23 回复(2)
小声bb一句 此题不严谨
发表于 2019-02-25 20:20:56 回复(0)
默认低地址为栈底,高地址为栈顶,操作是先赋值,然后top++;此题意思是高地址为栈底,低地址为栈顶,所以先上移top指针再赋值。
发表于 2019-10-01 22:20:49 回复(1)

初始栈顶指针top为n+1,说明栈顶指针指向栈顶元素的下一个元素。

也就是说栈顶指针指向的位置是下一个要插入元素的位置。因此直接插入V[top]:=x。

然后为了保证栈顶指针指向下一个要插入的位置,top:=top+1

发表于 2019-08-20 15:17:43 回复(0)
这道题是不是有问题?
1.进栈(PUSH)
置TOP=TOP+1(栈指针加1,指向进栈地址);
②S(TOP)=X,结束(X为新进栈的元素);
2.出栈(POP)
①X=S(TOP),(退栈后的元素赋给X):
TOP=TOP-1,结束(栈指针减1,指向栈顶)。
发表于 2019-08-28 21:15:44 回复(0)
初始top为-1,那么之后top++ 初始top为n-1,之后top--
发表于 2023-06-08 15:16:21 回复(0)
栈的开口端叫做栈顶;封口端叫做栈底;
题目说初始栈顶指针top=n+1,要入栈不是一般top指针上移吗?应该是V[top]=x,然后再top=top+1(向上生长)。
但是答案是C,先移动再赋值,那么这个栈就是向下生长了。
一般内存分配中,栈向低地址(下)生长,堆向高地址(上)生长,也就是这个栈的容量就是n+1了。
编辑于 2023-02-13 22:55:47 回复(0)
是否可以这么理解。top指针为n+1,n代表元素个数,既然有n个元素,那么第n个元素下标为n-1。那么此时入栈得加到下标为n的位置,所以就top--,v[top]=elem。但是为什么栈顶指针和栈顶元素中间要隔着一个元素呢?
发表于 2019-07-19 09:57:22 回复(1)

x=S.data「S.top--」🙃🙃

发表于 2018-10-27 14:19:03 回复(2)
难道初始栈默认为空 栈底指针是n+1 越往上越小? 只有这样才选c吧
发表于 2018-10-24 17:46:13 回复(1)
栈顶为n+1,入栈操作top--
发表于 2018-08-20 11:19:39 回复(1)
为什么是先移动再赋值呢?top不变了吗
发表于 2023-09-06 17:27:31 回复(1)
栈底在高地址,堆栈是从高地址向低地址延伸的,所以答案就是top-1
发表于 2023-04-11 20:19:47 回复(0)
栈的内存地址是由栈底向栈顶递减的,所以是top=top-1
发表于 2022-10-24 08:15:22 回复(0)
题目都没说清楚啊
发表于 2022-09-27 20:48:13 回复(0)
入栈的步骤是先移动栈顶指针,再进行赋值。入队的步骤是先赋值,再移动队尾指针。
发表于 2022-08-30 23:40:22 回复(0)

大多数情况下栈是向下生长,堆是向上生长

  • 栈顶指针指向栈顶的元素
    • 则先移动,再赋值
  • 栈顶指针指向栈顶下一个元素
    • 则需要先赋值再移动
发表于 2021-07-29 09:51:50 回复(0)
初始栈顶指针top为n+1,代表栈地址由下往上是由大到小排列,元素越多,栈顶指针越小。绕了个弯儿~
发表于 2019-11-18 14:12:04 回复(0)
题目的意思是栈为空时,栈顶指针指向n+1
发表于 2023-11-24 11:05:47 回复(0)