更多“判断题在用单链表表示的链式队列Q中,队头指针为Q-front,队尾指针为Q-rear,则队空条件为Q-front==Q-rear。( )A 对B 错”相关问题
  • 第1题:

    假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素站点(注意不设头指针) ,试编写相应的置空队、判队空 、入队和出队等算法。


    参考答案:
      置空队就是建立一个头节点,并把头尾指针都指向头节点,头节点是不存放数据的;判队空就是当头指针等于尾指针时,队空;入队时,将新的节点插入到链队列的尾部,同时将尾指针指向这个节点;出队时,删除的是队头节点,要注意队列的长度大于1还是等于1的情况,这个时候要注意尾指针的修改,如果等于1,则要删除尾指针指向的节点。
      [算法描述]
      //先定义链队结构:
      typedef struct queuenode
      {Datatype data;
      struct queuenode *next;
      }QueueNode; //以上是结点类型的定义
      typedef struct
      {queuenode *rear;
      }LinkQueue; //只设一个指向队尾元素的指针
      (1) 置空队
      void InitQueue( LinkQueue *Q)
      { //置空队:就是使头结点成为队尾元素
      QueueNode *s;
      Q->rear = Q->rear->next;//将队尾指针指向头结点
      while (Q->rear!=Q->rear->next)//当队列非空,将队中元素逐个出队
      {s=Q->rear->next;
      Q->rear->next=s->next;
      delete s;
      }//回收结点空间
      }
      (2) 判队空
      int EmptyQueue( LinkQueue *Q)
      { //判队空。当头结点的next指针指向自己时为空队
      return Q->rear->next->next==Q->rear->next;
      }
      (3) 入队
      void EnQueue( LinkQueue *Q, Datatype x)
      { //入队。也就是在尾结点处插入元素
      QueueNode *p=new QueueNode;//申请新结点
      p->data=x; p->next=Q->rear->next;//初始化新结点并链入
      Q-rear->next=p;
      Q->rear=p;//将尾指针移至新结点
      }
      (4) 出队
      Datatype DeQueue( LinkQueue *Q)
      {//出队,把头结点之后的元素摘下
      Datatype t;
      QueueNode *p;
      if(EmptyQueue( Q ))
      Error("Queue underflow");
      p=Q->rear->next->next; //p指向将要摘下的结点
      x=p->data; //保存结点中数据
      if (p==Q->rear)
      {//当队列中只有一个结点时,p结点出队后,要将队尾指针指向头结点
      Q->rear = Q->rear->next;
      Q->rear->next=p->next;
      }
      else
      Q->rear->next->next=p->next;//摘下结点p
      delete p;//释放被删结点
      return x;
      }

  • 第2题:

    用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

    A.仅修改队头指针

    B.仅修改队尾指针

    C.队头、队尾指针都要修改

    D.队头,队尾指针都可能要修改


    正确答案:D

  • 第3题:

    设循环队列Q的定义中有front和size两个域变量,其中front表示队头元素的指针,size表示队列的长度,如下图所示(队列长度为3,队头元素为x,队尾元素为z)。设队列的存储空间容量为M,则队尾元素的指针为 (58)。

    A.(Q.front+Q.size-1)

    B.(Q.front+Q.size-1+M)%M

    C.(Q.front-Q.size)

    D.(Q.front-Q.size+M)%M


    正确答案:B
    本题考查循环队列队尾指针的计算方法。从图示可以看出,要得到z的值可进行Q.front+Q.size-1操作,但在此不容忽视的一个问题是,循环队列在进行了多次入队出队操作之后,Q.front+Q.size-1有可能大于M,如Q.front指向M-1空间时,Q.front+Q.size-1=M+1,这已超出队列长度,所以需要让其与M进行求模操作,修正位置号。

  • 第4题:

    循环队列的队头指针为f,队尾指针为r,当()时表明队列为空。
    r==f

  • 第5题:

    在用单链表表示的链式队列中,队头在链表的链尾位置。


    正确答案:错误

  • 第6题:

    判断一个循环队列Q(最多n个元素)为满的条件是()。

    • A、Q->rear==Q->front
    • B、Q->rear==Q->front+1
    • C、Q->front==(Q->rear+1)%n
    • D、Q->front==(Q->rear-1)%n

    正确答案:C

  • 第7题:

    循环队列的队首指针为front,队尾指针为rear,则队空的条件为()。


    正确答案:front=rear

  • 第8题:

    设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为()


    正确答案:front=(rear+1)%MAXLEN

  • 第9题:

    在顺序队列中,应该有队头和队尾两个指针来指示,队头指针和队尾指针的初值在队列的初始化时均应该设置为(),当对队列进行插入和删除的操作后,如果头指针和尾指针相等时,队列为()。


    正确答案:0;空

  • 第10题:

    填空题
    循环队列的队头指针为f,队尾指针为r,当()时表明队列为空。

    正确答案: r==f
    解析: 暂无解析

  • 第11题:

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

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

  • 第12题:

    判断题
    用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。
    A

    B


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

  • 第13题:

    一个带头节点的链式队列的头指针f指向头节点,队尾指针为r,则判断队空的条件为______。

    A.f!=NULL

    B.r!=NULL

    C.f==NULL

    D.f==r


    正确答案:D
    解析:队列(Queue)是一种先进先出(FIFO)的线性表,队列是只允许在一端进行插入,另一端进行删除运算的线性表。允许删除的那一端称为队首(Front),允许插入运算的另一端称为队尾(Rear)。通常称队列的节点插入为进队,队列的节点删除为出队。若有队列Q=(q0,q1…qn-1),则q0称为队首节点,qn-1称为队尾节点。当队首指针与队尾指针指向同一位置时,则队列为空。

  • 第14题:

    某循环队列的容量为M,队头指针指向队头元素,队尾指针指向队尾元素之后,如下图所示(M=8),则队列中的元素数目为(41)(MOD表示整除取余运算)。

    A.rear-front

    B.front-rear

    C.(rear-front+M)MODM

    D.(front-rear+M)MOD M


    正确答案:C
    解析:本题考查数据结构中队列的础知识。队列是仅在表头删除元素、在表尾插入元素的操作受限的线性表,其特点是先入先出。应用中可以将队列看作容器。队列采用顺序存储结构(一维数组,顺序队列)时,为了降低运算的复杂度,元素入队时,只需修改队尾指针rear,(rear+1→rear);元素出队时,只需修改队头指针front(front+1→front)。由于顺序队列的存储空间是提前设定的,所以队尾指针会有一个上限值,当队尾指针达到其上限时,就不能只通过修改队尾指针来实现新元素的入队操作了。此时,可将顺序队列假想成一个环状结构,称为循环队列。队列容量为M时,队头指针front和队尾指针rear的值循环地在0~M-1之间变化,当rear>front时,队列中元素数目为rear-front;当rearfront时,队列中元素数目为rear-front +M。综上,队列中元素数目为(rear-front+M)MOD M。

  • 第15题:

    如果希望循环队列中的向量单元都能得到利用,则可设置一个标志域tag,每当尾指针和头指针值相同时,以tag的值为O或1来区分队列状态是“空”还是“满”.请对下列函数填空,使其分别实现与此结构相应的入队列和出队列的算法.

    intEnQueue(CirQueue*Q,DataType x)

    {

    if Q->tag==1 return 0;

    Q->data[Q->rear]=x;

    Q->rear=(Q->rear+1)%MAXQSIZE

    if(Q->rear==Q->front)Q->tag=1

    return1:

    }

    intDeQueue(CirQueue*Q,DataType*x)

    {

    if((1))return0;

    *x=Q->data[Q->front];

    Q->front= (2) ;

    (3) ;

    return1;

    }

    (1)

    (2)

    (3)


    正确答案:

    (1)Q->tag= =0(或者!Q->tag)//如果标志域tag为0,则队空,无法出队,算法结束;
    (2)(Q->front+l)% MAXQSIZE//出队,头指针循环加1;
    (3)if(Q->rear= =Q->front)Q->tag=0;//出队后,则检查尾指针是否等于头指针,若相等,则队空,置标志域tag为0.

  • 第16题:

    用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时()。

    • A、仅修改队头指针
    • B、仅修改队尾指针
    • C、队头、队尾指针都可能要修改
    • D、队头、队尾指针都要修改

    正确答案:C

  • 第17题:

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


    正确答案:空栈;空;只含有一个结点

  • 第18题:

    用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。


    正确答案:正确

  • 第19题:

    在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插人时必须把新结点的地址赋给()。

    • A、elemHead
    • B、elemTail
    • C、elemHead和elemTail
    • D、elemHead或elemTail

    正确答案:C

  • 第20题:

    循环队列的最大存储空间为MaxSize,若队头指针front,队尾指针rear,采用少用一个存储空间以有效地判断栈空或栈满,队空的判定条件为()


    正确答案:rear==front为真

  • 第21题:

    判断题
    在用单链表表示的链式队列中,队头在链表的链尾位置。
    A

    B


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

  • 第22题:

    填空题
    循环队列的队首指针为front,队尾指针为rear,则队空的条件为()。

    正确答案: front=rear
    解析: 暂无解析

  • 第23题:

    判断题
    在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。()
    A

    B


    正确答案:
    解析: