#include<iostream>
using namespace std;
const int Max=50;
typedef struct
{
int a[Max];
int length;
}sqlist;
void creat(sqlist &L,int n);
void printlist(sqlist &L);
void guibing(sqlist &L1,sqlist &L2,sqlist &L3);
int main()
{
cout<<"线性表1你想输入几组数字"<<endl;
sqlist list1;
sqlist list2;
sqlist list3;
int n;
cin>>n;
creat(list1,n);
cout<<endl;
printlist(list1);
cout<<"线性表2你想输入几组数字"<<endl;
cin>>n;
creat(list2,n);
printlist(list2);
guibing(list1,list2,list3);
printlist(list3);
return 0;
}
void creat(sqlist &L,int n)
{
int i=0;
cin>>L.a[i];
for(i=1;i<=n-1;i++)
{
cin>>L.a[i];
while(L.a[i]<=L.a[i-1])
{
cout<<"please input again"<<endl;
cin>>L.a[i];
}
}
L.length=i;
}
void guibing(sqlist &L1,sqlist &L2,sqlist &L3)
{
int i=0,j=0,k=0;
while(i<=L1.length-1&&j<=L2.length-1)
{
if(L1.a[i]<L2.a[j])
{
L3.a[k]=L1.a[i];
i++;
k++;
}
else if(L1.a[i]>L2.a[j])
{
L3.a[k]=L2.a[j];
j++;
k++;
}
else
{
L3.a[k]=L1.a[i];
i++;
j++;
k++;
}
}
if(i==L1.length)
{
while(j<=L2.length-1)
{
L3.a[k]=L2.a[j];
j++;
k++;
}
}
else if(j==L2.length)
{
while(i<=L1.length-1)
{
L3.a[k]=L1.a[i];
k++;
i++;
}
}
L3.length=k;
}
void printlist(sqlist &L)
{
if(L.length==0)
{
return ;
}
else
{
int i;
for(i=0;i<=L.length-1;i++)
{
cout<<L.a[i]<<" ";
}
cout<<endl;
}
}
线性表的归并算法
最新推荐文章于 2023-07-21 12:27:34 发布