更多“在一个顺序栈中,若栈顶指针等于(),则为空栈;若栈顶指针等于()”相关问题
  • 第1题:

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

  • 第2题:

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

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

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

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

    D.上述三种说法都不对


    正确答案:C
    栈是限制仅在表的一端进行插入和删除的运算的线性表,通常称插入、删除的这一端为栈顶,男一端称为栈底。

  • 第3题:

    设有一个空栈,栈顶指针为1000H,现有输入序列为12345,push,push,pop,push,pop,push,push后,输出序列为(),栈顶指针是()。


    正确答案:2,3;1003H

  • 第4题:

    已知一个顺序栈*s,栈顶指针是top,它的容量为MAXSIZE,则判断栈空的条件为(),栈满的条件是()


    正确答案:s->top==-1;s->top==MAXSIZE-1

  • 第5题:

    设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),栈顶指针为()。


    正确答案:23;1003H

  • 第6题:

    设有一个非空的链栈,栈顶指针为hs,要进行出栈操作,用x保存出栈结点的值,栈结点的指针域为next,则可执行x=hs->data;()。


    正确答案:hs=hs->next;

  • 第7题:

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


    正确答案:–1;StackMaxSize-1

  • 第8题:

    填空题
    设有一个空栈,栈顶指针为1000H,现有输入序列为12345,push,push,pop,push,pop,push,push后,输出序列为(),栈顶指针是()。

    正确答案: 2,3,1003H
    解析: 暂无解析

  • 第9题:

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

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

  • 第10题:

    填空题
    在栈的顺序实现中,栈顶指针top,栈为空条件()。

    正确答案: top=-1
    解析: 暂无解析

  • 第11题:

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

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

    B

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

    C

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

    D

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


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

  • 第12题:

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

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

    B

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

    C

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

    D

    上述三种说法都不对


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

  • 第13题:

    下列叙述中正确的是

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

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

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

    D.上述三种说法都不对


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

  • 第14题:

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


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

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

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

    D.上述三种说法都不对

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

  • 第15题:

    在一个链栈中,若栈顶指针等于NULL,则为();在一个链队中,若队首指针与队尾指针的值相同,则表示该队列为()或该队列为()。


    正确答案:栈空;空队;队列只有一个元素

  • 第16题:

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

    • A、n-1
    • B、n
    • C、n+1
    • D、n/2

    正确答案:B

  • 第17题:

    在顺序栈中进行退栈操作时,()。

    • A、谁先谁后都可以
    • B、先移动栈顶指针,后取出元素
    • C、不分先后,同时进行
    • D、先取出元素,后移动栈顶指针

    正确答案:D

  • 第18题:

    在堆栈中保持不变的是()

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

    正确答案:B

  • 第19题:

    在栈的顺序实现中,栈顶指针top,栈为空条件()。


    正确答案:top=-1

  • 第20题:

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

    n-1

    B

    n

    C

    n+1

    D

    n/2


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

  • 第21题:

    填空题
    已知一个顺序栈*s,栈顶指针是top,它的容量为MAXSIZE,则判断栈空的条件为(),栈满的条件是()

    正确答案: s->top==-1,s->top==MAXSIZE-1
    解析: 暂无解析

  • 第22题:

    单选题
    下列叙述中错误的是(  )。
    A

    在带链队列中,队头指针和队尾指针都是在动态变化的

    B

    在带链栈中,栈顶指针和栈底指针都是在动态变化的

    C

    在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的

    D

    在带链队列中,队头指针和队尾指针可以指向同一个位置


    正确答案: B
    解析:
    带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个结点,在入队和退队过程中,队头指针和队尾指针都是在动态变化的,A项正确;栈的入栈和退栈操作只在栈顶进行,所以栈顶指针变化,栈底指针不变,B项错误;带链的栈在入栈和退栈过程中栈底指针不变,栈顶指针随之变化,C项正确;循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置,D项正确,因为带链队列为空时,队头指针和队尾指针指向同一个位置。答案选择B选项。

  • 第23题:

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

    30

    B

    29

    C

    20

    D

    19


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

  • 第24题:

    填空题
    在一个链式栈中,若栈顶指针等于NULL则为(),在一个链式队列中,若队头指针与队尾指针的值相同,则表示该队列为()或该队列()。

    正确答案: 空栈,空,只含有一个结点
    解析: 暂无解析