1630: 线性表-2个有序表的合并(顺序存储)
金币值:2
定数:8
时间限制:1.000 s
内存限制:128 M
正确:32
提交:43
正确率:74.42% 命题人:
题目描述
已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC且LC中的数据元素仍按值非递减有序列排列。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
//假设建立有序表时输入的数据已经有序
typedef int ElemType;
typedef struct {
ElemType *elem; // 顺序表数组的基址
int length; // 顺序表当前元素个数
} SqList;
void initList(SqList &L);
void inputList(SqList &L);
void mergeList(SqList La,SqList Lb,SqList &Lc);
void printList(SqList L);
int main(void) {
SqList La,Lb,Lc;
initList(La);
initList(Lb);
inputList(La);
inputList(Lb);
initList(Lc);
mergeList(La,Lb,Lc);
printList(Lc);
return 0;
}
void initList(SqList &L) {
L.elem=(ElemType*)malloc(MAXSIZE*sizeof(ElemType));
L.length=0;
}
void inputList(SqList &L) {
scanf("%d",&L.length);
for(int i=0; i<L.length; i++) scanf("%d",&L.elem[i]);
}
void printList(SqList L) {
for(int i=0; i<L.length; i++) printf("%d ",L.elem[i]);
}
/*仅提交以下代码*/
void mergeList(SqList La,SqList Lb,SqList &Lc) {
int i=0,j=0,k=0;
Lc.length=La.length+Lb.length;
while(i<La.length && j<Lb.length) {
if(La.elem[i]<=Lb.elem[j]) {
} else {
}
}
while(i<La.length) {
}
while(j<Lb.length) {
}
}
输入格式
输入数据共4行:
第1行:LA的数据元素的数目
第2行:LA中的各数据元素,以空格间隔
第3行:LB的数据元素的数目
第4行:LB中的各数据元素,以空格间隔
第1行:LA的数据元素的数目
第2行:LA中的各数据元素,以空格间隔
第3行:LB的数据元素的数目
第4行:LB中的各数据元素,以空格间隔
输出格式
依次输出LC中各数据元素的值。
输入样例 复制
4
1 2 6 7
3
1 3 5
输出样例 复制
1 1 2 3 5 6 7