niusouti.com

11、用带头结点的表长大于1的单链表表示队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

题目

11、用带头结点的表长大于1的单链表表示队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针

B.仅修改队尾指针

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

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


相似考题
参考答案和解析
仅修改队头指针
更多“11、用带头结点的表长大于1的单链表表示队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。”相关问题
  • 第1题:

    ●在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p→*next→*next=head,则 (55) 。

    (55) A.p指向头结点

    B.p指向尾结点

    C.*p的直接后继是头结点

    D.*p的直接后继是尾结点


    正确答案:D
    【解析】因为循环链表的尾结点的指针域中存放的是头指针,而尾结点由其直接前驱结点的指针域所指向,因此,当指针p指向尾结点的直接前驱结点时,满足关系式p->next->next=head。

  • 第2题:

    单向循环链表是单向链表的一种扩充,当单向链表带有头结点时,把单向链表中尾结点的指针域由空指针改为回答;当单向链表不带头结点时,则把单向链表中尾结点的指针域由空指针改为指向()。


    参考答案:头结点的指针、指向第一个结点的指针

  • 第3题:

    设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。

    A、rear=front->next

    B、rear=rear->next

    C、front=front->next

    D、front=rear->next


    正确答案:C

  • 第4题:

    某单循环链表头指针为head且表长大于1,指针p指向表中某个结点,若p→next→next= head,则(11)。

    A.p指向头结点

    B.p指向尾结点

    C.*p的直接后继是头结点

    D.*P的直接后继是尾结点


    正确答案:D
    解析:因为p→next→next=head,所以p→next是尾结点,即*P的直接后继是尾结点。

  • 第5题:

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

    A.elemHead

    B.elemTail

    C.elemHead->next和elemHead

    D.elemTail->next和elemTail


    正确答案:D

  • 第6题:

    在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data;()。
    f=f->next;

  • 第7题:

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

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

    正确答案:C

  • 第8题:

    在带头结点的链队列q中,用q.front表示队头指针,q.rear表示队尾指针,结点结构为data next ,删除链队列的队头结点的主要语句为()。

    • A、s=q.front;q.front->next=s.next;
    • B、s=q.front->next;q.front->next=s.next;
    • C、s=q.front->next;q.front=s.next;
    • D、s=q;q.front->next=s.next;

    正确答案:B

  • 第9题:

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


    正确答案:0;空

  • 第10题:

    单选题
    设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点x,则入队列的操作序列为(  )。
    A

    front->next=s;front=s;

    B

    s->next=rear;rear=s;

    C

    rear->next=s;rear=s;

    D

    s->next=front;front=s;


    正确答案: A
    解析:

  • 第11题:

    单选题
    设有一个带头结点的链队列,队列中每个结点由一个数据域data和指针域next组成,front和rear分别为链队列的头指针和尾指针,要执行出队操作,用x保存出队元素的值,p为指向结点类型的指针,可执行如下操作:p=front->next;x=p->data;然后执行()。
    A

    front=p->next;

    B

    front->next=p->next;

    C

    front=p;

    D

    front->next=p;


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

  • 第12题:

    填空题
    在一个链队中,设f和r分别为队头和队尾指针,则删除一个结点的操作为()。(结点的指针域为next)

    正确答案: f=f->next
    解析: 暂无解析

  • 第13题:

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


    参考答案:
      置空队就是建立一个头节点,并把头尾指针都指向头节点,头节点是不存放数据的;判队空就是当头指针等于尾指针时,队空;入队时,将新的节点插入到链队列的尾部,同时将尾指针指向这个节点;出队时,删除的是队头节点,要注意队列的长度大于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;
      }

  • 第14题:

    设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则判定该队中只有一个结点的条件是()。

    A、front->next

    B、rear->next

    C、front==rear

    D、front!=rear


    正确答案:C

  • 第15题:

    在链队列上删除队头元素时,只需修改头结点中的指针,不必修改尾指针。()

    此题为判断题(对,错)。


    参考答案:错误

  • 第16题:

    程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

    该程序段实现的功能是( )。

    A.首结点成为尾结点

    B.尾结点成为首结点

    C.删除首结点

    D.删除尾结点


    正确答案:A
    循环找到末尾结点,然后赋值给第一个结点,所以选择A)。

  • 第17题:

    以下函数为链队列的入队操作,X为要人队的结点的数据域的值,front,rear分别是链队列的队头、队尾指针。
    (1)malloc(sizeof(structnode))
    (2)rear->next=p
    (3)p

  • 第18题:

    在一个链队中,设f和r分别为队头和队尾指针,则删除一个结点的操作为()。(结点的指针域为next)
    f=f->next;

  • 第19题:

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


    正确答案:正确

  • 第20题:

    在一个带头结点的单循环链表中,P指向尾结点的直接前驱,则指向头结点的指针head可用P表示为head=()。


    正确答案:p->next->next

  • 第21题:

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

    仅修改队头指针

    B

    仅修改队尾指针

    C

    队头、队尾指针都要修改

    D

    队头、队尾指针都可能要修改


    正确答案: C
    解析:

  • 第22题:

    填空题
    在一个不带头结点的非空链队中,f和r分别为队头和队尾指针,队结点的数据域为data,指针域为next,若要进行出队操作,并用变量x存放出队元素的数据值,则相关操作为x=f->data;()。

    正确答案: f=f->next
    解析: 暂无解析

  • 第23题:

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

    elemHead

    B

    elemTail

    C

    elemHead和elemTail

    D

    elemHead或elemTail


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

  • 第24题:

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

    B


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