假定利用数组a[m]顺序存储一个栈,用top表示栈顶指针,用top= =-1表示空,该数组所能存储的栈的最大长度为m,当()时,再做进栈运算会发生“上溢”。A、top == m - 1B、top == 0C、top == m - 2D、top == 1

题目

假定利用数组a[m]顺序存储一个栈,用top表示栈顶指针,用top= =-1表示空,该数组所能存储的栈的最大长度为m,当()时,再做进栈运算会发生“上溢”。

  • A、top == m - 1
  • B、top == 0
  • C、top == m - 2
  • D、top == 1
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设栈的存储空间为S(1:m),初始状态为top=m+1。经过一系列入栈与退栈操作后,top=m。现又在栈中退出一个元素后,栈顶指针top值为()。

A.m+1

B.0

C.m-1

D.产生栈空错误


正确答案:A

第2题:

当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。

A、top++

B、top—

C、top=0

D、top=N-1


参考答案:B

第3题:

若栈采用顺序存储方式存储,现两栈共享空间V[1m],top[1]、top[2]分别代表第1和第2个栈的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]


正确答案:B

第4题:

栈的数组表示中,top为栈顶指针,栈空的条件是(31)。

A.top=0

B.top=maxSize

C.top=maxSize

D.top=-1


正确答案:A
解析:栈的数组表示中,栈顶指针指向数组的第一个元素时,表示栈为空。

第5题:

若一个栈用数组data1..n存储,初始栈顶指针top为1,则以下元素x进栈的正确操作是()。

A.top++;datatop=x;

B.datatop=x;top++;

C.top;datatop=x;

D.datatop=x;top―


参考答案:B

第6题:

将编号为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)。

第7题:

正常情况下,删除非空的顺序存储结构的堆栈的栈顶元素,栈顶指针top的变化是()。

A、top不变

B、top=0

C、top=top+1

D、top=top-1


参考答案:D

第8题:

假定用上界为m的向量s(1:m)存储栈,设栈顶指针top总是指向栈顶元素,要将x入栈的操作步骤是(26)。

A.top=top+1;s[top]=x;

B.s[top]=x;top=top+1;

C.top=(top+1)%m;s[top]=x;

D.s[top]=x;top=(top+1)%m


正确答案:A
解析:本题考查栈的基本操作。因为试题规定,top总是指向栈顶元素,所以,如果要进行入栈操作,栈顶指针top加1,指向一个空的存储空间,然后把x元素写入即可。出栈时,过程相反。

第9题:

若一个栈用数组data[ 1..n]存储,初始栈顶指针top为n,则以下元素x进栈的正确操作是()。

A.top++;data[top]=x;

B.data[top]=x;top++;

C.top--;data[top]=x;

D.data[top]=x;top―


参考答案:D

第10题:

当利用大小为N的数组顺序存储一个栈时,假定用栈顶指针top=N+1表示栈空,则向这个栈插入一个元素时,首先应执行______语句修改top指针。

A.top:=top+1

B.top:=top-1

C.top:=0

D.top:=N


正确答案:B
解析:由题可知该题栈底为高地址,因此向栈中插入一数据时指向栈顶的指针减1。

更多相关问题