#include<iostream>
using namespace std;
//动态分配
#define InitSize 100
typedef int ElemType;
typedef struct {
ElemType *data;
int length;
int MaxSize;
}SeqList;
//顺序表初始化
void InitList(SeqList &L) {
L.data = new ElemType[InitSize];
if(!L.data) {
cout<<"存储空间申请失败!";
return;
}
L.length = 0;
L.MaxSize = InitSize;
}
//合并两个有序顺序表
bool Merge(SeqList A,SeqList B,SeqList &C) {
if(A.length + B.length > C.MaxSize)
return false;
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(j < B.length)
C.data[k++] = B.data[j++];
C.length = k;
return true;
}
//遍历并打印顺序表
void PrintList(SeqList L) {
for (int i =0;i <L.length;i ++)
cout <<L.data [i]<<" ";
cout <<endl;
}
void main(){
SeqList A;
InitList(A);
SeqList B;
InitList(B);
SeqList C;
InitList(C);
A.length = 4;
B.length = 5;
C.length = A.length + B.length;
cout<<"打印A有序表:"<<endl;
for(int i = 0;i < A.length;i++) {
A.data[i] = 2 * i + 1;
}
PrintList(A);
cout<<"打印B有序表:"<<endl;
for(int j = 0;j < B.length;j++) {
A.data[j] = 2 * (j+1);
}
PrintList(B);
cout<<"打印合并顺序表C:"<<endl;
if(Merge(A,B,C))
PrintList(C);
}
运行结果如下图所示
如何解决,求大佬告知