更多“单循环链表表示的队列中保存了n个数据元素,若只设尾指针,则出队操作的时间复杂度是O(___)。”相关问题
  • 第1题:

    设循环链队列的长度为n,若只设尾指针,则出队和入队的时间复杂度分别是()和()。


    参考答案:O(1)、O(1)

  • 第2题:

    ●设长度为n的链队列用单循环链表表示,若只设头指针,则入队、出队操作的时间是 (41) ,若只设尾指针呢,需要的时间为 (42) 。

    (41) A.O(n2,O (1)

    B.O(n),O (1)

    C.O(n2-1),O(n)

    D.O(n-1),O(n-1)

    (42) A.O (1) ,O (1)

    B.O(n),O (1)

    C.O(n2),O (1)

    D.O(n),O(n)


    正确答案:B,A
    【解析】只设头指针时,入队操作的时间为O(n),出队操作的时间为O(1);
    只设尾指针时,入队操作的时间为O(1),出队操作的时间也为O(1)。

  • 第3题:

    下面关于栈和队列的叙述,错误的是( )。

    A.栈和队列都是操作受限的线性表

    B.队列采用单循环链表存储时,只需设置队尾指针就可使入队和出队操作的时间复杂度都为O(1)

    C.若队列的数据规模n可以确定,则采用顺序存储结构比链式存储结构效率更高

    D.利用两个栈可以模拟一个队列的操作,反之亦可


    正确答案:D
    解析:栈和队列都是操作受限的线性表:栈仅在表尾插入和删除元素,队列仅在表头删除元素、在表尾插人元素。入队时初始队列为空,出队后队列变为空要进行特殊处理。入队操作和出队操作均与队列长度无关,因此其时间复杂度都为O(1)。队列是先入先出的线性表,栈是后进先出的线性表。一个线性序列经过队列结构后只能得到与原序列相同的元素序列,而经过一个栈结构后则可以得到多种元素序列。用两个栈可以模拟一个队列的人队和出队操作。

  • 第4题:

    设长度为n的链队列用单循环链表表示,若只设头指针,则人队、出队操作的时间是(41);若只设尾指针,需要的时间为(42)。

    A.O(n2),O(1)

    B.O(n),O(1)

    C.O(n2-1),O(n)

    D.O(n-1),O(n-1)


    正确答案:B

  • 第5题:

    性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(5)存储方式最节省运算时间。

    A.单链表

    B.仅有头指针的单循环链表

    C.双链表

    D.仅有尾指针的单循环链表


    正确答案:D
    解析:仅有头指针的单循环链表最费时。

  • 第6题:

    设长度为n的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为()和();若只设尾指针,则入队和出对操作的时间复杂度分别为()和()。


    正确答案:O(n);O(1);O(1);O(1)

  • 第7题:

    设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何?若只设尾指针呢?


    正确答案:当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。

  • 第8题:

    用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是()和()。


    正确答案:O(1);O(n)

  • 第9题:

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


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

  • 第10题:

    填空题
    用循环链表表示的队列长度为n,若只设头指针,则出对和入对的时间复杂度分别是()和();若只设尾指针,则出队和入队的时间复杂度分别是()和()。

    正确答案: 0(1),0(n),0(n),0(1)
    解析: 暂无解析

  • 第11题:

    单选题
    设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。
    A

    单链表

    B

    单循环链表

    C

    带尾指针的单循环链表

    D

    带头结点的双循环链表


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

  • 第12题:

    问答题
    设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何?若只设尾指针呢?

    正确答案: 当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。
    解析: 暂无解析

  • 第13题:

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

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


    参考答案:对

  • 第14题:

    若某线性表中最常用的操作是在最后一个元素之前插入和删除元素,则采用______最节省运算时间。

    A.单链表

    B.仅有头指针的单循环链表

    C.仅有尾指针的单循环链表

    D.双链表


    正确答案:D
    解析:链式存储有:单链表(线性链表)、循环链表、双向链表。
      单链表从链表的第一个表元开始,将线性表的节点依次存储在链表的各表元中。链表的每个表元除要存储线性表节点信息外,还要一个成分用来存储其后继节点的指针。
      循环链表是单链表的变形,其特点是表中最后一个节点的指针域指向头节点,整个链表形成一个环。
      因此,从表中的任意一个节点出发都可以找到表中的其他节点。循环链表中,从头指针开始遍历的结束条件不是节点的指针是否为空,而是是否等于头指针。为简化操作,循环链表中往往加入表头节点。
      双向链表的节点中有两个指针域,其一指向直接后继,另一指向直接前驱,克服了单链表的单向性的缺点。

  • 第15题:

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


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

  • 第16题:

    设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为_______。

    A.O(1)

    B.O(log2n)

    C.O(n)

    D.O(n2)


    正确答案:C

  • 第17题:

    队列采用如下图所示的循环单链表表示,图(a)表示队列为空,图(b)为e1、e2.e3依次入队列后的状态,其中,rear指针指向队尾元素所在结点,size为队列长度。以下叙述中,正确的是( )。

    A.入队列时需要从头至尾遍历链表,而出队列不需要B.出队列时需要从头至尾遍历链表,而入队列不需要C.新元素加入队列以及队头元素出队列都需要遍历链表,D.入队列和出队列操作都不需要遍历链表


    正确答案:D

  • 第18题:

    某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

    • A、单链表
    • B、仅有头指针的单循环链表
    • C、双链表
    • D、仅有尾指针的单循环链表

    正确答案:D

  • 第19题:

    用循环链表表示的队列长度为n,若只设头指针,则出对和入对的时间复杂度分别是()和();若只设尾指针,则出队和入队的时间复杂度分别是()和()。


    正确答案:0(1);0(n);0(n);0(1)

  • 第20题:

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


    正确答案:正确

  • 第21题:

    设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用()最节省时间。

    • A、单链表
    • B、单循环链表
    • C、带尾指针的单循环链表
    • D、带头结点的双循环链表

    正确答案:D

  • 第22题:

    填空题
    设长度为n的链队列用单循环链表表示,若只设头指针,则入队和出队操作的时间复杂度分别为()和();若只设尾指针,则入队和出对操作的时间复杂度分别为()和()。

    正确答案: O(n),O(1),O(1),O(1)
    解析: 暂无解析

  • 第23题:

    填空题
    用循环链表表示的队列长度为n,若只设头指针,则出队和入队的时间复杂度分别是()和()。

    正确答案: O(1),O(n)
    解析: 在带头指针的循环链表中,出队即是删除开始结点,这只需修改相应指针;入队即是在终端结点的后面插入一个结点,这需要从头指针开始查找终端结点的地址。

  • 第24题:

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

    B


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