两个长度为n的双链表,节点类型相同,若以h1为头指针的双链表是非循环的,以h2为头指针指针的双链表是循环的,则()。A.对于非循环双链表来说,删除首节点的操作,其时间复杂度都是O(n)B.对于循环双链表来说,删除首节点的操作,其时间复杂度都是O(n)C.对于非循环双链表来说,删除尾节点的操作,其时间复杂度都是O(1)D.对于循环双链表来说,删除尾节点的操作,其时间复杂度都是O(1)

题目

两个长度为n的双链表,节点类型相同,若以h1为头指针的双链表是非循环的,以h2为头指针指针的双链表是循环的,则()。

A.对于非循环双链表来说,删除首节点的操作,其时间复杂度都是O(n)

B.对于循环双链表来说,删除首节点的操作,其时间复杂度都是O(n)

C.对于非循环双链表来说,删除尾节点的操作,其时间复杂度都是O(1)

D.对于循环双链表来说,删除尾节点的操作,其时间复杂度都是O(1)


相似考题
更多“两个长度为n的双链表,节点类型相同,若以h1为头指针的双链表是非循环的,以h2为头指针指针的双链表是循环的,则()。”相关问题
  • 第1题:

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

    A.单链表

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

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

    D.双链表


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

  • 第2题:

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


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

  • 第3题:

    带有头结点的单循环链表的头指针为head,则该链表为空的判定条件是()。

    A、head==NUL

    B、head-next==NULL

    C、head!=NULL

    D、head-next==head


    参考答案:D

  • 第4题:

    在链表结构中,采用(59)可以用最少的空间代价和最高的时间效率实现队列结构。

    A.仅设置尾指针的单向循环链表

    B.仅设置头指针的单向循环链表

    C.仅设置尾指针的双向链表

    D.仅设置头指针的双向链表


    正确答案:A
    解析:采用链表作为存储结构时,从节省空间的角度和需要实现的运算角度考虑(不需要从两个方向遍历元素),应使用单链表,如图2-17所示。

    基本队列定义为元素从一端进从另一端出,以保证先进入的元素先出来。若以最高的时间效率实现元素入、出队列,就应该在链表两端设置指针,使入队和出队操作最简单。从下图可以看出,若仅设置头指针(指向链表的第一个结点),删除元素时比较简单(修改第一个结点的指针域的指向),而插入元素时就需要遍历整个链表以获得尾指针。若仅设置尾指针(指向链表的最后一个结点),则可直接获得头指针(取尾结点指针域的值)以实现删除操作,插入元素时则修改两个指针域(尾结点指针域和新插入结点的指针域)。

  • 第5题:

    若在单向链表上,除访问链表中所有结点外,还需在表尾频繁插入结点,那么采用( )最节省时间。

    A.仅设尾指针的单向链表
    B.仅设头指针的单向链表
    C.仅设尾指针的单向循环链表
    D.仅设头指针的单向循环链表

    答案:C
    解析:
    单向链表仅设头指针时,在表尾插入结点时需要遍历整个链表,时间复杂度为o (n),仅设尾指针时,在表尾插入结点的时间复杂度为O (1),但是不能访问除了尾结点之外的所有其他结点。而单向循环链表仅设头指针时,在表尾插入结点时需要遍历整个链表,时间复杂度为0(n),仅设尾指针时,在表尾插入结点的时间复杂度为0(1),同时达到表头结点的时间复杂度为0(1),因此对于题中给出的操作要求,适合采用仅设尾指针的单向循环链表。

  • 第6题:

    若在单向链表上,除访问链表中所有节点外,还需在表尾频繁插入节点,那么采用()最节省时间。

    • A、仅设尾指针的单向链表
    • B、仅设头指针的单向链表
    • C、仪设尾指针的单向循环链表
    • D、仅设头指针的单向循环链表

    正确答案:C

  • 第7题:

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


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

  • 第8题:

    设head1和p1分别是不带头结点的单向链表A的头指针和尾指针,head2和p2分别是不带头结点的单向链表B的头指针和尾指针,若要把B链表接到A链表之后,得到一个以head1为头指针的单向循环链表。写出其中两个关键的赋值语句(不用完整程序,结点的链域为next)。


    正确答案:p1->next=head2;p2->next=head1;

  • 第9题:

    设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句()。


    正确答案:p->next=head;

  • 第10题:

    在单链表、双链表和单循环表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?


    正确答案:1.单链表。当我们知道指针p指向某结点时,能够根据该指针找到其直接后继,但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。
    2.双链表。由于这样的链表提供双向链接,因此根据已知结点可以查找到其直接前趋和直接后继,从而可以删除该结点。其时间复杂度为O(1)。
    3.单循环链表。根据已知结点位置,我们可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。

  • 第11题:

    单选题
    以下说法中不正确的是()。
    A

    双向循环链表中每个结点需要包含两个指针域

    B

    已知单向链表中任一结点的指针就能访问到链表中每个结点

    C

    顺序存储的线性链表是可以随机访问的

    D

    单向循环链表中尾结点的指针域中存放的是头指针


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

  • 第12题:

    问答题
    设head1和p1分别是不带头结点的单向链表A的头指针和尾指针,head2和p2分别是不带头结点的单向链表B的头指针和尾指针,若要把B链表接到A链表之后,得到一个以head1为头指针的单向循环链表。写出其中两个关键的赋值语句(不用完整程序,结点的链域为next)。

    正确答案: p1->next=head2;p2->next=head1;
    解析: 暂无解析

  • 第13题:

    如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素面前插入新元素,在最后一个元素的后面插入新元素,则最好使用( )。

    A.只有表尾指针没有表头指针的循环单链表

    B.只有表尾指针没有表头指针的非循环双链表

    C.只有表头指针没有表尾指针的循环双链表

    D.既有表头指针也有表尾指针的循环单链表


    正确答案:C

  • 第14题:

    完善算法:已知单链表结点类型为:

    函数create建立以head为头指针的单链表。


    正确答案:

  • 第15题:

    在长度为n的()上删除第一个元素,其算法的时间复杂度为O(n)。

    A.只有表头指针的不带表头结点的循环单链表

    B.只有表尾指针的不带表头结点的循环单链表

    C.只有表尾指针的带表头结点的循环单链表

    D.只有表头指针的带表头结点的循环单链表


    参考答案:A

  • 第16题:

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

    A.单链表

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

    C.双链表

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


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

  • 第17题:

    在长度为n(Il>1)的()上,删除第一个元素.其时间复杂度为O(n)。

    A.只有首结点指针的不带头结点的循环单链表
    B.只有尾结点指针的不带头结点的循环单链表
    C.只有尾结点指针的带头结点的循环单链表
    D.只有头结点的循环单链表

    答案:A
    解析:
    只有首结点指针的不带头结点的循环单链表删除第一个元素,需要遍历整个链表,因此A项的时间复杂度为O(n),BCD三项的时间复杂度都为O(1)。

  • 第18题:

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

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

    正确答案:D

  • 第19题:

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


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

  • 第20题:

    设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作()。


    正确答案:p->next=head;

  • 第21题:

    要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为next,头指针为head,尾指针为p,则可执行head=head->next;()。


    正确答案:p->next=head;

  • 第22题:

    如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。

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

    正确答案:B

  • 第23题:

    填空题
    设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句()。

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

  • 第24题:

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

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