参考答案和解析
B
更多“8、若栈采用顺序存储方式,两个栈共享空间V[1..m],top1代表第一个栈顶,top2代表第二个栈顶,栈1的底在V[1], 栈2的底在V[m],则栈满的条件是()。”相关问题
  • 第1题:

    两个顺序栈共享一个内存空间时,当______时才溢出。

    A.两个栈的栈顶同时达到这片内存空间的中心点

    B.其中一个栈的栈顶达到这片内存空间的中心点

    C.两个栈的栈顶在这片内存空间的某一位置相遇

    D.两个栈均不空,且一个栈的栈顶达到另一个栈的栈底

    A.

    B.

    C.

    D.


    正确答案:C

  • 第2题:

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

    A.50

    B.19

    C.1

    D.20


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

  • 第3题:

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


    正确答案:
    20

  • 第4题:

    设用数组A[1,n]作为两个栈S1、S2的共用存储空间,对任一个栈,只有当数组A[1,n]全满时才不作入栈操作,则分配这两个栈空间的最佳方案是()。

    A.S1的栈底位置设为1,S2的栈底位置设为n
    B.S1的栈底位置设为n/2,S2的栈底位置设为n/2+1
    C.S1的栈底位置设为1,S2的栈底位置设为n/2
    D.S1的栈底位置设为n/2,S2的栈底位置设为1

    答案:A
    解析:
    由于栈中元素个数不固定,因此如果将栈底设在中间位置,固定了栈中元素的个数,不能满足只有当数组全满时才不作入栈操作的要求。

  • 第5题:

    设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。

    • A、S1的栈底位置为0,S2的栈底位置为n-1
    • B、S1的栈底位置为0,S2的栈底位置为n/2
    • C、S1的栈底位置为0,S2的栈底位置为n
    • D、S1的栈底位置为0,S2的栈底位置为1

    正确答案:A

  • 第6题:

    若一个栈以向量V[1..n]存储,初始栈顶指针top设为n+1,则元素x进栈的正确操作是()。

    • A、top++; V[top]=x;
    • B、V[top]=x; top++;
    • C、top--; V[top]=x;
    • D、V[top]=x; top--;

    正确答案:C

  • 第7题:

    栈的插入和删除操作在()进行。

    • A、栈顶
    • B、栈底
    • C、栈顶或栈底
    • D、任意位置

    正确答案:A

  • 第8题:

    单选题
    在栈中,下列说法正确的是()。
    A

    每次插入总是在栈顶,每次删除也总是在栈顶

    B

    每次插入总是在栈顶,每次删除总是在栈底

    C

    每次插入总是在栈底,每次删除总是在栈顶

    D

    每次插入总是在栈底,每次删除也总是在栈底


    正确答案: C
    解析: 暂无解析

  • 第9题:

    单选题
    栈的插入和删除操作在()进行。
    A

    栈顶

    B

    栈底

    C

    栈顶或栈底

    D

    任意位置


    正确答案: A
    解析: 暂无解析

  • 第10题:

    单选题
    下列叙述中正确的是(  )。
    A

    在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

    B

    在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

    C

    在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

    D

    在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化


    正确答案: D
    解析:
    栈中元素遵循“先进后出”的原则。入栈和出栈都是对栈顶指针操作,因此,栈底指针不变,栈中元素随栈顶指针的变化而动态变化。答案选择C选项。

  • 第11题:

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

    30

    B

    29

    C

    20

    D

    19


    正确答案: A
    解析:
    栈是一种特殊的线性表,它所有的插入与删除操作都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即取出栈顶元素赋予指定变量。在内存中,栈的增大方向是地址递减,元素依次存储在单元30:49中,个数为:49-30+1=20个。答案选择C选项。

  • 第12题:

    单选题
    设数组S[n]作为两个栈S1和S2的存储空间,对任何一个栈只有当S[n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是()。
    A

    S1的栈底位置为0,S2的栈底位置为n-1

    B

    S1的栈底位置为0,S2的栈底位置为n/2

    C

    S1的栈底位置为0,S2的栈底位置为n

    D

    S1的栈底位置为0,S2的栈底位置为1


    正确答案: D
    解析: 两栈共享空间首先两个栈是相向增长的,栈底应该分别指向两个栈中的第一个元素的位置,并注意C++中的数组下标是从0开始的。

  • 第13题:

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

  • 第14题:

    下列叙述中正确的是

    A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

    B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

    C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

    D.上述三种说法都不对


    正确答案:C
    解析:栈是限定在一端进行插入与删除的线性表。通常用指针top来表示栈顶的位置,用指针bottom指向栈底,在栈中,栈是按照先进后出的原则组织数据的,栈顶指针动态反映了栈中元素的变化情况。

  • 第15题:

    以下关于栈的叙述错误的是(  )。


    A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

    B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

    C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

    D.上述三种说法都不对

    答案:A,B,D
    解析:
    栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。当有新元素进栈时,栈顶指针向上移动;当有元素出栈时,栈项指针向下移动。在栈中栈底指针不变,栈中元素随栈顶指针的变化而动态变化。可见,C项表述正确。故选ABD。

  • 第16题:

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

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

    正确答案:A

  • 第17题:

    在存储器堆栈中,保持不变的是()

    • A、 栈顶
    • B、 栈指针
    • C、 栈底
    • D、 栈中的数据

    正确答案:C

  • 第18题:

    在栈中,下列说法正确的是()。

    • A、每次插入总是在栈顶,每次删除也总是在栈顶
    • B、每次插入总是在栈顶,每次删除总是在栈底
    • C、每次插入总是在栈底,每次删除总是在栈顶
    • D、每次插入总是在栈底,每次删除也总是在栈底

    正确答案:A

  • 第19题:

    在一个顺序栈中,若栈顶指针等于(),则为空栈;若栈顶指针等于(),则为满栈。


    正确答案:–1;StackMaxSize-1

  • 第20题:

    单选题
    若栈采用顺序存储方式存储,现两栈共享空间V[1..m],topi]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。
    A

    Itop[2]-top[1]==0

    B

    top[l]+l==top[2]

    C

    top[l]+top[2]==m

    D

    top[l]==top[2]


    正确答案: D
    解析:

  • 第21题:

    填空题
    在一个顺序栈中,若栈顶指针等于(),则为空栈;若栈顶指针等于(),则为栈满。

    正确答案: —1,maxsize —1
    解析: 暂无解析

  • 第22题:

    单选题
    若用数组S[0..n-1]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是()。
    A

    S1的栈底位置为0,S2的栈底位置为n-1

    B

    S1的栈底位置为0,S2的栈底位置为n/2-1

    C

    S1的栈底位置为1,S2的栈底位置为n

    D

    S1的栈底位置为1,S2的栈底位置为n/2


    正确答案: B
    解析: 暂无解析

  • 第23题:

    单选题
    下列叙述中正确的是(  )。
    A

    在栈中,栈中的元素随栈底指针与栈顶指针的变化而动态变化

    B

    在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

    C

    在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

    D

    上述三种说法都不对


    正确答案: D
    解析:
    栈中元素遵循“先进后出”的原则。入栈和出栈都是对栈顶指针操作,因此,栈底指针不变,栈中元素随栈顶指针的变化而动态变化。答案选择C选项。

  • 第24题:

    单选题
    若栈采用顺序存储方式存储,现两栈共享空间V[1  m],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]


    正确答案: A
    解析: