工学

单选题若栈顶指针指向栈顶元素,当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为()。A n-1B nC n+1D n/2

题目
单选题
若栈顶指针指向栈顶元素,当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为()。
A

n-1

B

n

C

n+1

D

n/2

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为()。

A.30

B.29

C.20

D.19


正确答案:C

第2题:

将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。双栈数据结构的定义如下:

Typedef struct

{int top[2],bot[2]; //栈顶和栈底指针

SElemType *V; //栈数组

int m; //栈最大可容纳元素个数

}DblStack


参考答案:
  两栈共享向量空间,将两栈栈底设在向量两端,初始时,左栈顶指针为-1,右栈顶为m。两栈顶指针相邻时为栈满。两栈顶相向、迎面增长,栈顶指针指向栈顶元素。
  [算法描述]
  (1) 栈初始化
  int Init()
  {S.top[0]=-1;
  S.top[1]=m;
  return 1; //初始化成功
  }
  (2) 入栈操作:
  int push(stk S ,int i,int x)
  ∥i为栈号,i=0表示左栈,i=1为右栈,x是入栈元素。入栈成功返回1,失败返回0
  {if(i<0||i>1){ cout<<“栈号输入不对”<  if(S.top[1]-S.top[0]==1) {cout<<“栈已满”<  switch(i)
  {case 0: S.V[++S.top[0]]=x; return(1); break;
  case 1: S.V[--S.top[1]]=x; return(1);
  }
  }∥push
  (3) 退栈操作
  ElemType pop(stk S,int i)
  ∥退栈。i代表栈号,i=0时为左栈,i=1时为右栈。退栈成功时返回退栈元素
  ∥否则返回-1
  {if(i<0 || i>1){cout<<“栈号输入错误”<  switch(i)
  {case 0: if(S.top[0]==-1) {cout<<“栈空”<  else return(S.V[S.top[0]--]);
  case 1: if(S.top[1]==m { cout<<“栈空”<  else return(S.V[S.top[1]++]);
  }∥switch
  }∥算法结束
  (4) 判断栈空
  int Empty();
  {return (S.top[0]==-1 && S.top[1]==m);
  }
  [算法讨论]
  请注意算法中两栈入栈和退栈时的栈顶指针的计算。左栈是通常意义下的栈,而右栈入栈操作时,其栈顶指针左移(减1),退栈时,栈顶指针右移(加1)。

第3题:

(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 【1】 个元素。


正确答案:

119

第4题:

假设用-个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有的元素个数为( )。

A.50

B.19

C.1

D.20


正确答案:B
当前栈中的所有元素的个数就是用栈底指针减去栈顶指针。

第5题:

下列叙述中,正确的是( )。

A.入栈运算只需将新元素插到栈顶指针指向的位置

B.出栈运算只需将栈顶元素赋给一个指定变量

C.出栈运算与读栈顶元素是相同的操作

D.读栈顶元素不删除栈顶元素


正确答案:D
解析:入栈运算需先将栈顶指针加1,然后将新元素插到栈顶指针指向的位置,选项A是错误的。出栈运算需将栈顶元素赋给一个指定变量,然后将栈顶指针减1,选项B是错误的。出栈运算与读栈顶元素不同之处在于读栈顶元素不删除栈顶元素。答案是选项D。

第6题:

以下( )不是栈的基本运算。

A)删除栈顶元素

B)删除栈底元素

C)判断栈是否为空

D)将栈置为空栈


正确答案:B
栈是一种特殊的线性表,只能在固定的一端进行插入和删除操作。允许插入和删除的一端称为栈顶(TOP),另一端称为栈底(BOTTOM)。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素。因此不能直接删除栈底的元素。 

第7题:

POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。( )

此题为判断题(对,错)。


正确答案: 正确

第8题:

假如用一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有19个元素。()

此题为判断题(对,错)。


参考答案:错误

第9题:

假设用一个长度为50的数组(数组元素的下标为0~49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有( )个元素。


正确答案:20
20

第10题:

假设用一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bosom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有______个元素。


正确答案:19。
19。 解析:当前栈中的所有元素的个数就是用栈底指针减去栈顶指针。

更多相关问题