王道 数据结构 p17 第7题
#include<iostream>
#define InitSize 100
#define arrLen 7
using namespace std;
typedef struct {
int *data;
int len,MaxSize;
}SeqList;
void init(SeqList &L){
L.data=new int[InitSize];
L.len=0;
if(L.data!=NULL)
cout<<"success!" <<endl;
else
cout<<"faild"<<endl;
}
void input(SeqList &L){
for(int i=0;i<arrLen;i++)
{
cout<<"请输入第"<<i+1<<"个数字:";
cin>>L.data[i];
L.len++;
}
}
void output(SeqList &L)
{
for(int i=0;i<L.len;i++)
{
cout<<L.data[i]<<" ";
}
cout<<endl;
}
void mySwap(int &x,int &y)
{
int temp=x;
x=y;
y=temp;
}
void selectionSort(SeqList &L)
{
for(int i=0;i<L.len-1;i++)
{
int leastIndex=i;
for(int j=i+1;j<L.len;j++)
{
if(L.data[j]<L.data[leastIndex])
leastIndex=j;
}
mySwap(L.data[i],L.data[leastIndex]);
}
}
int mergeList(SeqList &L1,SeqList &L2,SeqList &L3)
{
int k=0,i=0,j=0;
while(i<L1.len&&j<L2.len)
{
if(L1.data[i]<=L2.data[j])
L3.data[k++]=L1.data[i++];
else
L3.data[k++]=L2.data[j++];
}
while(i<L1.len)
L3.data[k++]=L1.data[i++];
while(j<L2.len)
L3.data[k++]=L2.data[j++];
L3.len=k;
return 0;
}
int main(){
SeqList L1,L2,L3;
init(L1);
init(L2);
init(L3);
input(L1);
input(L2);
selectionSort(L1);
selectionSort(L2);
cout<<endl<<"L1:" ;
output(L1);
cout<<endl<<"L2:" ;
output(L2);
mergeList(L1,L2,L3);
cout<<endl<<"L3:" ;
output(L3);
return 0;
}