#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量
#define LISTINCREMENT 5 //线性表存储空间的分配增量
typedef int ElemType;
typedef int Status;
#define OK 1
#define OVERFLOW -1
typedef struct {
ElemType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)
} Sqlist;
//构造一个长度为5的线性表
Status InitList_sq(Sqlist &L) {
int x;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //开辟5*ElemType字节长度的地址空间,并返回首地址
if(!L.elem)exit(OVERFLOW);
printf("创建一个长度为5的线性表\n"); //存储分配失败
for(int i =0; i<LIST_INIT_SIZE; i++) {
printf("请输入第%d个元素:",i+1);
scanf("%d",&x);
L.elem[i]=x;
}
L.length=5; //空表长度为5
L.listsize=LIST_INIT_SIZE*sizeof(ElemType); //初始存储容量
return OK;
}
Status InitList_sq2(Sqlist &L) {
int x;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //开辟10*ElemType字节长度的地址空间,并返回首地址
if(!L.elem)exit(OVERFLOW);
L.length=10; //空表长度为10
L.listsize=LIST_INIT_SIZE*sizeof(ElemType); //初始存储容量
return OK;
}
void mergeList(Sqlist LA,Sqlist LB,Sqlist LC) {
int i=0;
for(i=0; i<LA.length; i++) {
LC.elem[i]=LA.elem[i];//插入LA
LC.elem[i+5]=LB.elem[i];//插入LB
}
}
//输出线性表内容
void printList(Sqlist L) {
int i=0;
while(i<L.length) {
printf("%d\t",L.elem[i]);
i++;
}
}
int main() {
Sqlist LA;//定义线性表
Sqlist LB;
Sqlist LC;
InitList_sq(LA); //构造一个长度为5的线性表
InitList_sq(LB); //构造一个长度为5的线性表
InitList_sq2(LC); //构造一个长度为5的线性表
mergeList(LA,LB,LC);
printf("线性表LA为:");
printf("\n");
printList(LA);
printf("线性表LB为:");
printf("\n");
printList(LB);
printf("线性表LC为:");
printf("\n");
printList(LC);
return 0;
}