// 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递增输入)