顺序表的合并


// MergList.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>

//#define maxsize=100
//创建
typedef struct{
 int data[100];
 int length;

}Sqlist;
//初始化
void initList(Sqlist &L){
   L.length=0;
}
//生成
void creatList(Sqlist &L,int e,int p){
    //int e,p;
 printf("请输入结点数:\n");
 scanf_s("%d",&e);
 L.length=e;
 printf("请输入每个结点的值:\n");
 for(int i=0;i<e;i++){
    scanf_s("%d",&p);
 L.data[i]=p;
 
 }
}

//合并
void mergList(Sqlist La,Sqlist Lb,Sqlist &Lc){
 int pa,pb;
 int i=0,j=0;
 int k=0;
 while(k<La.length +Lb.length){
      while(i<La.length&&j<Lb.length){
  pa=La.data[i];
  pb=Lb.data[j];
  if(pa<=pb){
   Lc.data[k]=pa;
   ++i;
   ++k;
  }
  else{
  Lc.data[k]=pb;
  j++;
  ++k;
  }
 }
   if(i<La.length){
    for(;i<La.length;i++){
     Lc.data[k]=La.data[i];
     k++;
    }
   }
    if(j<Lb.length){
    for(;j<Lb.length;j++){
     Lc.data[k]=Lb.data[j];
     k++;
    }
   }
 }
}


 
void main(int argc, _TCHAR* argv[])
{
 Sqlist La,Lb,Lc;
 int e=0,p=0;
 initList(La);
 initList(Lb);
 initList(Lc);

 printf("建立La表:\n");
 creatList(La,e,p);

 printf("建立Lb表:\n");
 creatList(Lb,e,p);

 mergList(La,Lb,Lc);

 //合并后的表
 printf("合并后表为:\n");
 for (int i=0;i<La.length+Lb.length;i++){
  printf("%d,",Lc.data[i]);
 }

 system("Pause");
 
}

 (此程序没有实现对La和Lb排序,所以最好输入La和Lb递增输入)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值