数据结构例子-将两个线性表合并

将线性表la和lb合并为lc【array_la+lb=lc】
#include <iostream.h>
#define MAXSIZE 50
//输入学生数据
int input(int s[MAXSIZE])
{
 int i=0;
 while(1)
 {  
cin>>s[i];
if(s[i]==-11111) {cout<<"输入完毕!退出输入过程!"<<endl;break;} 
i++;
 } 
 return(i);
}
//排序
void sort(int s[MAXSIZE],int n)
{
 int t;
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
if(s[i]>s[j]) {  t=s[i]; s[i]=s[j]; s[j]=t;}
}
//输出学生记录
void output(int s[MAXSIZE],int n)
{
 int i;
 cout<<"已合并后的数据:"<<endl;
 cout<<"lc:"<<endl;
 for(i=0;i<n;i++)
 cout<<s[i]<<ends;
}
int merge(int sa[MAXSIZE],int l_a,int sb[MAXSIZE],int l_b,int sc[MAXSIZE])
{
  int i=0,j=0,k=0,m;
 while( i<l_a&&j<l_b)
{  if(sa[i]<sb[j]) {sc[k]=sa[i];i++;k++;}
   else if(sa[i]>sb[j]){sc[k]=sb[j];j++;k++;}
        else {sc[k]=sa[i];i++;k++;j++;}
 } 
 if(i<l_a) {for( m=i;m<l_a;m++)  sc[k++]=sa[m];  }
 if(j<l_b) {for( m=j;m<l_b;m++)  sc[k++]=sb[m];  }
return(k);
}
//主函数
void main()
{
 int la[MAXSIZE],lb[MAXSIZE],lc[MAXSIZE*2];
 cout<<"请输入la和lb线形表均以-11111表示结束输入"<<endl;
int length_la,length_lb,length_lc;
cout<<"la:";
length_la=input(la);
cout<<"lb:";
length_lb=input(lb);
//cout<<"学生人数:"<<length;
sort(la,length_la);
sort(lb,length_lb);
length_lc=merge(la,length_la,lb,length_lb,lc);
output(lc,length_lc);
}

你可能感兴趣的:(职场,休闲,线性表合并)