数据结构--顺序表合并操作

3 篇文章 0 订阅
2 篇文章 0 订阅
  • 线性表La和Lb中的元素按值非递减排列,归并La和Lb得到新的线性表Lc,Lc的数值也按非递减排列

Uoion_Sort_2.c 函数

#include "c1.h"
#include "c2_1.h"
#include <stdio.h>
#include <stdlib.h>

/*线性表La和Lb中的元素按值非递减排列,归并La和Lb得到新的线性表Lc,Lc的数值也按非递减排列*/
void MergeList2(SqList La,SqList Lb,SqList *Lc)
{
    ElemType *pa,*pa_last,*pb,*pb_last,*pc;
    pa=La.elem;
    pb=Lb.elem;
    (*Lc).listsize=(*Lc).length=La.length+Lb.length;//创建空表
    pc=(*Lc).elem=(ElemType *)malloc((*Lc).listsize*sizeof(ElemType));

    if(!(*Lc).elem)//存储失败
      exit(OVERFLOW);
      pa_last=La.elem+La.length-1;
      pb_last=Lb.elem+Lb.length-1;
      while(pa<=pa_last&&pb<=pb_last)//表a和表b均为非空
      {
          if(*pa<=*pb)
            *pc++=*pa++;//将pa所指单元的值赋给pc所指单元后,pa和pc的分别+1,指向下一个单元
          else
            *pc++=*pb++;////将pb所指单元的值赋给pc所指单元后,pb和pc的分别+1,指向下一个单元
      }
      while(pa<=pa_last)//表La非空且表Lb空
         *pc++=*pa++;//插入La的剩余元素
       while(pb<=pb_last)
         *pc++=*pb++;
}

main.c函数

#include "c1.h"
#include "c2_1.h"
#include <stdio.h>
#include <stdlib.h>

/*线性表La和Lb中的元素按值非递减排列,归并La和Lb得到新的线性表Lc,Lc的数值也按非递减排列*/
void MergeList2(SqList La,SqList Lb,SqList *Lc)
{
    ElemType *pa,*pa_last,*pb,*pb_last,*pc;
    pa=La.elem;
    pb=Lb.elem;
    (*Lc).listsize=(*Lc).length=La.length+Lb.length;//创建空表
    pc=(*Lc).elem=(ElemType *)malloc((*Lc).listsize*sizeof(ElemType));

    if(!(*Lc).elem)//存储失败
      exit(OVERFLOW);
      pa_last=La.elem+La.length-1;
      pb_last=Lb.elem+Lb.length-1;
      while(pa<=pa_last&&pb<=pb_last)//表a和表b均为非空
      {
          if(*pa<=*pb)
            *pc++=*pa++;//将pa所指单元的值赋给pc所指单元后,pa和pc的分别+1,指向下一个单元
          else
            *pc++=*pb++;////将pb所指单元的值赋给pc所指单元后,pb和pc的分别+1,指向下一个单元
      }
      while(pa<=pa_last)//表La非空且表Lb空
         *pc++=*pa++;//插入La的剩余元素
       while(pb<=pb_last)
         *pc++=*pb++;
}
}

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值