堆栈指针SP存放栈顶的地址,进栈时自动加1,出栈时自动减1,因此

题目

堆栈指针SP存放栈顶的地址,进栈时自动加1,出栈时自动减1,因此,SP总是指向栈顶

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

第1题:

执行入栈指令PUSH时,栈顶指针SP为:()。

A.SP←SP+1

B.SP←SP-1

C.SP←SP+2

D.SP←SP-2


正确答案:A

第2题:

堆栈寻址方式中,设A为通用寄存器,SP为堆栈指示器,MSP为SP指示器的栈顶单元,如果操作的动作是:(A)→MSP,(SP)-1→SP,那么出栈的动作应是()。

A、(MSP)→A,(SP)+1→SP

B、(SP)+1→SP,(MSP)→A

C、(SP)-1→SP,(MSP)→A

D、(SP)→A,(SP)-1→SP


正确答案:B

第3题:

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

第4题:

在堆栈寻址中,设A为累加器,SP为堆栈指示器,Msp为SP指示的栈顶单元。如果进栈操作顺序是:(SP)-1→SP,(A)→Msp,那么出栈操作的顺序应是()。

A.(Msp)→A,(SP)+1→SP
B.(SP)+1→SP,(Msp)→A
C.(SP)-1→SP,(Msp)→A
D.(Msp)→A,(SP)-1→SP

答案:A
解析:
堆栈是按特定顺序进行访问的存储区,其访问方式是后进先出,即先存入的数据后读出。对堆栈的操作有入栈和出栈两种,两者的操作完全相反,包括功能和顺序均相反。

第5题:

堆栈操作中都是对栈顶单元进行的,访问堆栈的地址是由堆栈指针SP指定的。在操作过程中,指针 SP不需要用户指定。在下推式堆栈中,写入堆栈的单元地址是(36)。

A.PC

B.指令寄存器

C.(SP)-1

D.(SP)+1


正确答案:D
解析:堆栈是一个专门的存储区,其存取数据的顺序是先进后出,每次操作都是对栈顶单元进行的。栈顶单元的地址,每次进出栈时都要自动修改。栈顶单元的地址放在堆栈指针SP中,写入堆栈时,栈顶单元已经存有数据,再写入新数据时,不能写入原来的SP中,必须写到栈顶单元的下一单元中,在堆栈地址是向下生长的下推式堆栈中,写入数据的堆栈单元的堆栈单元地址是(SP)+1,即进栈操作把SP加1后再把进栈的数据写入新的栈顶单元(SP)/1中。出栈时,把栈顶单元内容弹出,然后(SP)-1。指针SP的修改是指令自动完成的,不需要用户参与。

第6题:

执行出栈指令POP时,栈顶指针SP为:()。

A.SP←SP–1

B.SP←SP+1

C.SP←SP–2

D.SP←SP+2


正确答案:A

第7题:

在一个具有n个单元的顺序堆栈中,以地址低端作为栈底,以top作为栈顶指针。那么,在进行退栈操作时,top的变化情况为(37)。

A.top增1

B.top减1

C.top不变

D.top置0


正确答案:B
解析:堆栈是一种运算受限的线性表。其限制足,仅仅允许在表的一端进行插入和删除操作,这一端被称为栈顶,另外一端被称为栈底。在以地址低端作为栈底的顺序堆栈中,退栈操作也就是将栈顶指针下移一个元素。

第8题:

在堆栈操作中,当进栈数据全部弹出后,这时SP应指向()。

A.栈底单元

B.7FH单元

C.栈底单元地址加1

D.栈底单元地址减1


参考答案:A

第9题:

8086/8088CPU执行出栈操作时,栈指针SP的值( )。

A.-1

B.-2

C.+1

D.+2


正确答案:D

第10题:

在存储器堆栈结构中,堆栈指针SP的内容是()。

  • A、栈顶单元地址
  • B、栈底单元地址
  • C、栈顶单元内容
  • D、栈底单元内容

正确答案:A

更多相关问题