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

扩大线性表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语言版) 严蔚敏 吴伟民 编著 清楚大学出版社

发布了33 篇原创文章 · 获赞 7 · 访问量 4564

猜你喜欢

转载自blog.csdn.net/qq_45239614/article/details/100825973