#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;
typedef struct LNode{
ElemType* elem;
int length;
int MAXNUM;
}SqList;
Status InitSqList(SqList& L) {
printf("请输入顺序表的容量:");
scanf("%d", &L.MAXNUM);
if (L.MAXNUM > 0) {
L.elem = new ElemType[L.MAXNUM];
L.length = 0;
return OK;
} else {
return ERROR;
}
}
void MergeSqlist(SqList &La,SqList &Lb,SqList &Lc){
Lc.length=La.length+Lb.length;
Lc.elem=new ElemType[La.length+Lb.length];
int pa=0,pb=0,pc=0;
while(pa<La.length&&pb<Lb.length){
if(La.elem[pa]<=Lb.elem[pb]){
Lc.elem[pc++]=La.elem[pa++];
}else{
Lc.elem[pc++]=Lb.elem[pb++];
}
}
while(pa<La.length){
Lc.elem[pc++]=La.elem[pa++];
}
while(pb<Lb.length){
Lc.elem[pc++]=Lb.elem[pb++];
}
}
void traverse(SqList& L){
int n;
scanf("%d",&n);
if(n<L.MAXNUM){
for(int i=0;i<n;i++){
scanf("%d",&L.elem[i]);
L.length++;
}
}
}
void print(SqList L){
for (int i = 0; i < L.length; i++){
printf("%d ", L.elem[i]);
}
printf("\n");
}
int main(){
SqList La; //初始化一个线性表
if(InitSqList(La)==OK){
printf("顺序表初始化成功!\n");
printf("请输入数字的个数:\n");
traverse(La);
}
SqList Lb;
if(InitSqList(Lb)==OK){
printf("顺序表初始化成功!\n");
printf("请输入数字的个数:\n");
traverse(Lb);
}
SqList Lc;
MergeSqlist(La,Lb,Lc);
printf("合并后的顺序表:");
print(Lc);
return 0;
}
顺序表实现合并操作
最新推荐文章于 2024-08-08 15:12:59 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)