• 2022-05-31
    假设以两个元素依值递增有序排列的线性表 A 和 B 分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表 C ,其元素为 A 和 B 中元素的交集,且表 C 中的元素也依值递增有序排列。试对顺序表编写求 C 的算法。
  • 解  算法如下:void SqList_Intersect(SqList A,SqList B,SqList &C)//求元素递增排列的线性表A和B的元素的交集并     //存入C中{       i=1;j=1;k=0;       while(A.elem[i]&]]&]B.elem[j])       {              if(A.elem[i]B.elem[j]) j++;             if(A.elem[i]==B.elem[j])             {             C.elem[++k]=A.elem[i]; //当发现一个在A和B中都存在的元素,就添加到C中             i++;j++;             }      }//while}//SqList_Intersect

    举一反三

    内容

    • 0

      1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。 //将合并逆置后的结果放在C表中,并删除B表 StatusListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) { LinkList pa,pb,qa,qb; pa=A; pb=B; qa=pa; //保存pa的前驱指针

    • 1

      已知顺序表中的元素按元素值非递减有序排列,编写一个算法,删除顺序表中多余的值相同的元素。

    • 2

      已知 A 、 B 和 C 为3个递增有序的线性表,现要求对 A 表作如下操作:删去那些既在 B表中出现又在 C 表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)。

    • 3

      两个有序线性表分别具有n个元素与m个元素且n≤m,现将其归并成一个有序表,其最少的比较次数是

    • 4

      假设有两个按元素值递增有序排列的线性表[tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex]和[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex],均以单链表作存储结构,请编写算法将[tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex]表和[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex]表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表[tex=0.714x1.0]J/aA9EEo0KmJFnWWfX7LmQ==[/tex],并要求利用原表(即表[tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex]和[tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex])的结点空间构造[tex=0.714x1.0]J/aA9EEo0KmJFnWWfX7LmQ==[/tex]表。