代码实现
#include<malloc.h>
#include<iostream>
using namespace std;
//定义线性表结构
typedef struct SqList{
int *elem;
int length;
int listsize;
}SeqList;
//为线性表分配存储空间
void InitSeqList(SeqList &L){
L.elem=(int *)malloc(50*sizeof(int));
L.length=0;
L.listsize=50;
}
//定义输入数据元素函数
void input(SeqList &L,int sa){
int i=0;
while(sa>0){
cin>>L.elem[i];
L.length++;
i++;
sa--;
}
}
//定义获取线性表长度函数
int getLength(SeqList L){
return L.length;
}
//创建输出函数
void output(SeqList L){
int i;
for(i=0;i<L.length;i++){
cout<<(i+1)<<">、";
cout<<L.elem[i]<<" ";
}
cout<<endl;
}
//创建合并函数,将La,Lb,合并为Lc
void MergSeqList1(SeqList La,SeqList Lb,SeqList &Lc){
int i=0;//控制La中的数据元素的位置
int j=0;//控制Lb中的数据元素的位置
int k=0;//控制Lc中的数据元素的位置
while(i<La.length && j<Lb.length){
if(La.elem[i]<=Lb.elem[j]){
Lc.elem[k++]=La.elem[i];
Lc.length++;
i++;
}
else {
Lc.elem[k++]=Lb.elem[j];
Lc.length++;
j++;
}
}
while(i<La.length){
Lc.elem[k++]=La.elem[i];
Lc.length;
i++;
}
while(j<Lb.length){
Lc.elem[k++]=Lb.elem[j];
Lc.length++;
j++;
}
}
int main(){
int choose;
cout<<endl<<"******请进行选择******"<<endl
<<"1、使用顺序表合并"<<endl
<<"3、退出程序"<<endl;
cin>>choose;
while(choose!=3){
switch(choose){
case 1:{
SeqList La,Lb,Lc;
int sa,sb;
//初始化
InitSeqList(La);
InitSeqList(Lb);
//输入La、Lb元素
cout<<"请输入第一个升序排列的线性表SA:"<<endl;
cout<<"请输入总数据量:"<<endl;
cin>>sa;
cout<<"请输入数据:"<<endl;
input(La,sa);
cout<<endl;
cout<<"线性表中的数据为:"<<endl;
output(La);
cout<<endl;
cout<<"请输入第二个升序排列的线性表SB:"<<endl;
cout<<"请输入总数据量:"<<endl;
cin>>sb;
cout<<"请输入数据:"<<endl;
input(Lb,sb);
cout<<endl;
cout<<"线性表中的数据为:"<<endl;
output(Lb);
cout<<endl;
cout<<endl<<"合并成功!"<<endl<<endl<<"线性表中的数据为:"<<endl;
InitSeqList(Lc);
MergSeqList1(La,Lb,Lc);
output(Lc);
cout<<"SC表的长度为:"<<getLength(Lc)<<endl;
break;
}
default:{
cout<<endl;
cout<<"您的选择不正确,请您重新进行选择!!!"<<endl;
break;
}
}
cout<<endl<<endl;
cout<<"******请进行选择******"<<endl
<<"1、使用顺序表合并"<<endl
<<"3、退出程序"<<endl;
cin>>choose;
}
}
运行结果