/*将两个顺序表合并为一个新的有序顺序表
并由函数返回结果顺序表*/
#include<iostream>
using namespace std;
#define Max = 10
struct SeqList{
int data[5]={1,2,3,5,7};
int length = 5;
}L1;
struct SeqList{
int data[5]={3,4,6,8,9};
int length = 5;
}L2;
struct SeqList{
int data[10];
int length = 0;
}L3;
bool Merge(SeqList A,SeqList B,SeqList &C){
int i=0,j=0,k=0;
while(i<A.length && j<B.length){
if(A.data[i]<=B.data[j]){
C.data[k++] = A.data[i++];
}
else{
C.data[k++] = B.data[j++];
}
}
while(i<A.length){
C.data[k++] = A.data[i++];
}
while(i<B.length){
C.data[k++] = B.data[i++];
}
C.length=k;
return true;
}
int main(){
Merge(L1,L2,L3);
for (int i = 0; i < L3.length; i++)
{
cout<<L3.data[i]<<" ";
}
cout<<endl<<"length:"<<L3.length<<endl;
return 0;
}
你为啥三个结构都用SeqList呢?不是自己找事么?
你让Merge函数如何分辨三个SeqList参数各自是哪个啊
/*将两个顺序表合并为一个新的有序顺序表
并由函数返回结果顺序表*/
#include<iostream>
using namespace std;
#define Max = 10
struct SeqList{
int data[10];
int length = 0;
}L1,L2,L3;
bool Merge(SeqList A,SeqList B,SeqList &C){
int i=0,j=0,k=0;
while(i<A.length && j<B.length){
if(A.data[i]<=B.data[j]){
C.data[k++] = A.data[i++];
}
else{
C.data[k++] = B.data[j++];
}
}
while(i<A.length){
C.data[k++] = A.data[i++];
}
while(i<B.length){
C.data[k++] = B.data[i++];
}
C.length=k;
return true;
}
int main(){
int data1[5]={1,2,3,5,7};
memcpy(L1.data,data1,5);
L1.length = 5;
int data2[5]={3,4,6,8,9};
memcpy(L2.data,data2,5);
L2.length = 5;
Merge(L1,L2,L3);
for (int i = 0; i < L3.length; i++)
{
cout<<L3.data[i]<<" ";
}
cout<<endl<<"length:"<<L3.length<<endl;
return 0;
}