• 2022-05-28
    用带头节点的单链表表示整数集合,完成以下算法并分析时间复杂度:[tex=1.286x1.357]VAHhaW1te0xvoqDVN54/dg==[/tex] 设计一个算法求两个集合 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]和 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]原并运算,即 [tex=4.5x1.143]pV+DlOUbdpo+MVxlNrfyjU2snR0yXVgVAt7j0lDW6ng=[/tex] 要求不彼坏原有的单链表 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 和 [tex=1.357x1.214]2XZxEL4Gp5jUCjj+30JeO5eyL20RBXvNfY3CKS7wHSo=[/tex][tex=1.286x1.357]BEB68bP4vOVk/XYYizw11w==[/tex]假设集合中的元素按第增排列,设计一个高效算法求两个集合 [tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex] 和[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex] 的并运算,即 [tex=3.714x1.0]BgNd7LnR5ljYNteb80zDmg==[/tex]。要求不破坏原有的单链表 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]和 [tex=1.0x1.214]lKyloJhJiVHqissuZMcxeQ==[/tex][br][/br][br][/br]
  • 解 : [tex=1.286x1.357]VAHhaW1te0xvoqDVN54/dg==[/tex]先将 [tex=1.143x1.0]zKKWhru0rnVESFIFZKOLFA==[/tex] 单链表中所有节点复制到[tex=1.071x1.0]ZS5PIlX5c2Bd02F/FFD3Jw==[/tex]中,然后扫描单链表 [tex=1.286x1.214]M+Fu8iCmXbNseF0O32b5Kg==[/tex] 将其中所有不属于[tex=1.143x1.0]zKKWhru0rnVESFIFZKOLFA==[/tex]的节点复制到[tex=1.071x1.0]CDqZU2DnZYODwQdf9R/LCQ==[/tex]中。对应的算法如下:void union1 (LinkList * ha,LinkList * hb, LinkIist x &hc){    LinkList * pa = ha->next, * pb = hb- >next, * pc, * rc;    hc - ( LinkList x )malloc( sizeof ( LinkList) ) ;    rc = hc;    while (pa!= NUJIL)    //将A复制到C中    {    pc = (LinkList * )malloc(eizeof(LinkList)) ;        pc->data= pa->data;        rc-> next - pc;        rc = pc;        pa = pa-> next;}while (pb!= NUIL)    //将日中不属于A的元素复制到C中{    pa = ha- >next;    while ( pa!- NUI.L&& pa- > data!- pb->data)        pa= pa - >next;    if ( pa == NUIL)    //pb- > data不在A中{        pc = (LinkList n )malloc( sizeof( LinkList) ) ;        pc- >data = pb- >data;        rc-> next - p;        rc = pc;    }    pb- p > next;   }rc- >next = NULL;}本算法的时间复杂度为[tex=3.071x1.357]MVEtkyNK6bJX0SS/c5kvfg==[/tex],其中[tex=1.786x1.0]WmrDBSHOHIs/V4J/xRGO1g==[/tex]为单链表[tex=1.143x1.0]zKKWhru0rnVESFIFZKOLFA==[/tex] 和[tex=1.071x1.0]EpxkuOteKSV9yVeQUNWkQw==[/tex]中的节点个数。[tex=1.786x1.286]vR0uZJ0+MnChig/sIe/LgQ==[/tex]算法中可以利用单链表中节点值的有序性来提高运行效率。对应的算法如下:void Union2 《 LinkL.ist * ha,I.inkIist * hb, LinkTist x &hc){    LinkList * pa = ha->next, *pb = hb-> next, *pc, * rc;    hc = ( LinkList n )malloc( sizeof( LinkList) ) ;    rc = hc;    while (pa!= NUIL && pb!= NUIL)    {    if (pa - > data data)        {    pc = (LinkList x )malloc(sizeof(LinkList));        pc- > data = pa- > data;        rc- > next = pC;        re = pc;        pa- pa -> next;}else if (pa->data > pb->data){    pc - (LinkList n )malloc(sizcof( LinkLiat));    pc - > data = pb- >data;    re-> next = pc;    rc= pc;    pb- pb-> next;}else    //pa-> data - pb-> date{        pc = (LinkList n malloc( sizeof (LinkList));        pc->data = pa-> data;        rc->next = p;        rc = pc;        pa = pa->next;pb= pb -> next;    }}while ( pal= NULL){    pc= ( LinkList * )malloc( sizeof ( LinkList));    p-> daLa = pa-> data;    rc - > next = pc;    rc= pc;    pa - pa ->next;}while (pb!= NUILL){        pc = 《LinkList  )malloc( sizeof(LinkList)) ;        pc- >data = pb- >data;        re- > Iext - p;        rc = pe;        pb = pb- > next;    }    rc->next = NUL.L;}本算法的时间复杂度为[tex=3.857x1.357]uH39T0qcaKLNSI8B6opsJg==[/tex], 其中[tex=1.786x1.0]WmrDBSHOHIs/V4J/xRGO1g==[/tex] 为单链表 [tex=1.143x1.0]zKKWhru0rnVESFIFZKOLFA==[/tex]和 [tex=1.071x1.0]EpxkuOteKSV9yVeQUNWkQw==[/tex]中的节点个数。[br][/br]

    举一反三

    内容

    • 0

      [br][/br]设 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 和 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 是有限集合, [tex=7.286x1.357]4qjqcQmcpdikt/sZAPn2+1ErhtHgWppBcB4im18bbOc=[/tex] 试求出[br][/br]从 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 到 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 存在单射、满射和双射的条件是什么 ?[br][/br]

    • 1

      两个信号 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 与 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 传输到接收站已知[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 错收为[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的概率为 0.02,[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 错收为[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]的概率为0.01而 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 发射的机会是[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex] 的2倍,求:(1) 收到信号 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]的概率(2) 收到信号 [tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex]的概率(3) 收到信号[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 而发射的是信号[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex]的概率

    • 2

          图示滑轮中,两重物[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 和 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的重量分别为 [tex=1.0x1.214]szVnMPaRHLo99rUmmmexUw==[/tex] 和 [tex=1.0x1.214]X/bsauxa6QmmbP44POFPqQ==[/tex] 。如物 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 以加速度 [tex=0.571x0.786]HXNXn3AXpwdIpZt8+6oCEw==[/tex] 下降,不计滑轮质量,求支座 [tex=0.786x1.0]5SeCOJOzMwSNbX8MGx2Qsg==[/tex]的约束力。[img=233x281]1798d798337fa47.png[/img]

    • 3

      对于以下集合[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]和[tex=1.071x1.0]r16o6Ym3kUZBpwROeE2QmQ==[/tex]构造从[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]到[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的双射函数.[br][/br][tex=8.0x1.357]y1inXUd6wdkNdTO5QL5Zuk/jevvGbQaRUZ7WiabigAg=[/tex]

    • 4

      对于以下集合[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]和[tex=1.071x1.0]r16o6Ym3kUZBpwROeE2QmQ==[/tex]构造从[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]到[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的双射函数.[br][/br][tex=6.143x1.357]VmIaqBca2g2Xj3sb3wuwhlVJuMp8Uf8UnMg/j+74FwqPjT9xX+T2w1tPKLXraZcV[/tex]