数据结构(C语言版)--线性表的两种合并方法

和自甴很熟 提交于 2019-11-29 14:23:23

扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去。
时间复杂度:O(ListLength(LA)*ListLength(LB))

viod union(List &La,List Lb){
 //将所有在线性表Lb中但不在La中的数据元素插入到La中。
 La_len=ListLength(La); Lb_len=ListLength(Lb);//求线性表的长度
 for(i=1;i<=Lb_len;i++){
      GetElem(Lb,i,e);         //取Lb中第i个数据元素赋给e
      if(!LocateElem(La,e,equal)) ListInsert(La,++La_len,e);
                                     //La中不存在和e相同的数据元素,则插入之
     }
     }//union

已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性LC,且LC中的数据元素仍按值非递减有序排列。
时间复杂度:O(ListLength(LA)+ListLength(LB))

void MergeList(List La,List Lb,List &Lc){
//已知线性表La和Lb中的数据元素按非值递减排列。
//归并La和Lb得到新的线性表Lc,Lc的数据元素也可按值非递减排列。
    InitList(Lc);
    i=j=1;k=0;
    La_len=ListLength(La); Lb_len=ListLength(Lb);
    while((i<=La_len)&&(j<=Lb_len)) {//La和Lb均非空
      GetElem(La,i,ai);GetElem(Lb,j,bj);
      if(ai<=bj) {ListInsert(Lc,++k,ai);++i;}
        else {ListInsert(Lc,++k,bj);++j};
       }
      while(i<=La_len) {
       GetElem(La,++i,ai);ListInsert(Lc,++k,ai);
       }
      while(i<=Lb_len) {
       GetElem(Lb,++j,bj);ListInsert(Lc,++k,bj);
       }

参考文献:数据结构(C语言版) 严蔚敏 吴伟民 编著 清楚大学出版社

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!