将两个分别含有m、n个节点的有序单链表归并成一个有序单链表,要求不破坏原有的单链表,对应算法的空间复杂度是()(MIN表示取最小值)。A.O(n)B.O(m)C.O(m+n)D.O(MIN(m,n))

题目

将两个分别含有m、n个节点的有序单链表归并成一个有序单链表,要求不破坏原有的单链表,对应算法的空间复杂度是()(MIN表示取最小值)。

A.O(n)

B.O(m)

C.O(m+n)

D.O(MIN(m,n))


相似考题
更多“将两个分别含有m、n个节点的有序单链表归并成一个有序单链表,要求不破坏原有的单链表,对应算法的空间复杂度是()(MIN表示取最小值)。”相关问题
  • 第1题:

    在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。

    A.删除单链表中的第一个元素

    B.删除单链表中的最后一个元素

    C.在单链表第一个元素前插入一个新元素

    D.在单链表最后一个元素后插入一个新元素


    正确答案:B

  • 第2题:

    将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。


    参考答案:
      合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。
      [算法描述]
      void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
      {//合并链表La和Lb,合并后的新表使用头指针Lc指向
      pa=La->next; pb=Lb->next;
      //pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点
      Lc=pc=La; //用La的头结点作为Lc的头结点
      while(pa && pb)
      {if(pa->datadata){pc->next=pa;pc=pa;pa=pa->next;}
      //取较小者La中的元素,将pa链接在pc的后面,pa指针后移
      else if(pa->data>pb->data) {pc->next=pb; pc=pb; pb=pb->next;}
      //取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移
      else //相等时取La中的元素,删除Lb中的元素
      {pc->next=pa;pc=pa;pa=pa->next;
      q=pb->next;delete pb ;pb =q;
      }
      }
      pc->next=pa?pa:pb; //插入剩余段
      delete Lb; //释放Lb的头结点
      }

  • 第3题:

    将长度为m的单链表连接在长度为n的单链表之后,单链表的长度为()。

    A、m+n

    B、m*n


    参考答案:A

  • 第4题:

    已知一个长度为n的单链表中的所有结点是有序(递增)的,以下叙述中正确的是()。

    A.插入一个结点使之有序的算法的时间复杂度为O(1)

    B.删除最大值结点使之有序的算法的时间复杂度为O(1)

    C.找最小值结点的算法的时间复杂度为O(1)

    D.以上都不对


    参考答案:C

  • 第5题:

    在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是(53)。

    A.O(1)

    B.O(n)

    C.O(nlogn)

    D.O(n2)


    正确答案:B
    解析:本题主要考核有序单链表上的插入操作及算法分析。对数据结构的任何操作都不能改变其原有的结构特性。因此,在有序单链表中插入一个新结点后,仍然要保持它的有序性。插入操作的关键是查找插入位置,主要时间也是花在插入位置的查找上。n个结点的单链表,有,n+1个可能插入的位置,即第一个结点之前和每一个结点之后。在第一个结点之前插入,需比较一次;在第一个结点之后插入需比较两次;……;在第,n个结点之后插入需查找次。如果在每一个位罩上作插入的概率相等,即则在有序单链表上查找插入位置的平均比较次数为:

  • 第6题:

    已知两个链表head1 和head2 各自有序,请把

    它们合并成一个链表依然有序,这次要求用递归方

    法进行。(Autodesk)


    正确答案:

     

    Node * MergeRecursive(Node *head1 , Node *head2)
    {
    if ( head1 == NULL )
    return head2 ;
    if ( head2 == NULL)
    return head1 ;
    Node *head = NULL ;
    if ( head1->data < head2->data )
    {
    head = head1 ;
    head->next = MergeRecursive(head1->next,head2);
    }
    else
    {
    head = head2 ;
    head->next = MergeRecursive(head1,head2->next);
    }
    return head ;
    }

  • 第7题:

    将长度为n的单链表接在长度为m的单链表之后的算法时间复杂度为()。

    A.O(n)
    B.0(1)
    C.O(m)
    D.O(m+n)

    答案:C
    解析:
    要将长度为n的单链表接在长度为m的单链表之后,必须从单链表的头结点沿链找到长度为m的单链表的最后一个结点,所以时间复杂度为O(m)。

  • 第8题:

    建立一个长度为n的有序单链表的时间复杂度为()


    答案:C
    解析:
    建立有序单链表的时间复杂度是O(n),对单链表插入节点时,先遍历单链表,找到插入位置,将节点插入。

  • 第9题:

    在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。

    • A、删除单链表中的第一个元素
    • B、删除单链表中的最后一个元素
    • C、在单链表第一个元素前插入一个新元素
    • D、在单链表最后一个元素后插入一个新元素

    正确答案:B

  • 第10题:

    折半查找法适用于()。

    • A、有序顺序表
    • B、有序单链表
    • C、有序顺序表和有序单链表都可以
    • D、无限制

    正确答案:A

  • 第11题:

    单选题
    在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是()
    A

    O(1)

    B

    O(n)

    C

    O(n2

    D

    O(log2n)


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

  • 第12题:

    问答题
    编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。

    正确答案: voidlinklist_c(Lnode*heaD.
    {Lnode*p;p=head;
    if(!p)returnERROR;
    while(p->next!=NULL)
    p=p->next;
    p->next=head;
    }
    设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N)。
    解析: 暂无解析

  • 第13题:

    ●在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是 (53) 。

    (53) A.O(1)

    B.O(n)

    C.O(nlogn)

    D.O(n2)


    正确答案:B

    【解析】本题主要考核有序单链表上的插入操作及算法分析。对数据结构的任何操作都不能改变其原有的结构特性。因此,在有序单链表中插入一个新结点后,仍然要保持它的有序性。
    插入操作的关键是查找插入位置,主要时间也是花在插入位置的查找上。n个结点的单链表,有,n+1个可能插入的位置,即第一个结点之前和每一个结点之后。在第一个结点之前插入,需比较一次;在第一个结点之后插入需比较两次;…;在第,n个结点之后插入需查找次。如果在每一个位置上作插入的概率相等,即 ,则在有序单链表上查找插入位置的平均比较次数为:


     

  • 第14题:

    创建一个包括n个结点的有序单链表的时间复杂度是()。

    A.O(1)

    B、O(n)

    C、O(n2)

    D、O(nlog2n)


    参考答案:C
    解释:单链表创建的时间复杂度是O(n),而要建立一个有序的单链表,则每生成一个新结点时需要和已有的结点进行比较,确定合适的插入位置,所以时间复杂度是O(n2)。

  • 第15题:

    在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是()。

    A、O(1)

    B、O(n)

    C、O(n的平方)

    D、O(log2n)


    参考答案:B

  • 第16题:

    将长度为n的单链表链接到长度为m的单链表之后的算法的时间复杂度是()。

    A.O(1)

    B.O(n)

    C.O(m)

    D.O(m+n)


    参考答案:C

  • 第17题:

    设A和B是两个单链表,其表中元素有序递增。请分析算法的时间复杂度。其时间复杂度为(40)。

    A.O(re+n-1)

    B.(m+n+1)

    C.O(m+n)

    D.不确定


    正确答案:C
    解析:设A表和B表的长度分别为m和n,则该算法的时间复杂度为O(m+n)。

  • 第18题:

    在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()

    A.O(1)

    B.O(n)

    C.O(n2)

    D.O(nlogn)


    正确答案: B

  • 第19题:

    设一个有序的单链表中有n个节点,现要求插入一个新节点后使得单链表仍然保持有序,则该操作的时间复杂度为()。


    答案:C
    解析:
    对单链表进行插入节点的操作,就是对单链表进行查找,找到节点需要插入的位置,然后修改指针,将节点插入单链表。

  • 第20题:

    对于n个元素组成的线性表,建立一个有序单链表的时间复杂度是()。

    • A、O(1)
    • B、O(n)
    • C、O(n2)
    • D、O(nlog2n)

    正确答案:C

  • 第21题:

    编写算法,将一个头指针为head不带头结点的单链表改造为一个单向循环链表,并分析算法的时间复杂度。


    正确答案: voidlinklist_c(Lnode*heaD.
    {Lnode*p;p=head;
    if(!p)returnERROR;
    while(p->next!=NULL)
    p=p->next;
    p->next=head;
    }
    设单链表的长度(数据结点数)为N,则该算法的时间主要花费在查找链表最后一个结点上(算法中的while循环),所以该算法的时间复杂度为O(N)。

  • 第22题:

    单选题
    将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为()。
    A

    O(1)

    B

    O(n)

    C

    O(m)

    D

    O(m+n)


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

  • 第23题:

    单选题
    在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()。
    A

    O(1)

    B

    O(n)

    C

    O(n2)

    D

    O(nlog2n)


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

  • 第24题:

    单选题
    折半查找法适用于()。
    A

    有序顺序表

    B

    有序单链表

    C

    有序顺序表和有序单链表都可以

    D

    无限制


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