#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define IO ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
const int maxn=1e3+5;
int a[maxn];
typedef struct{
int data[maxn];
int length;
}SeqList;
//创建线性表
void create(SeqList *&L,int a[],int n){
L=(SeqList *)malloc(sizeof(SeqList));
for(int i=0;i<n;i++){
L->data[i]=a[i];
}
L->length=n;
}
//打印线性表
void printList(SeqList *&L){
for(int i=0;i<L->length;i++){
cout<<L->data[i]<<" ";
}
cout<<endl;
}
//在顺序表L中查找与e相等的元素
int Locate(SeqList *&L,int e){
int i=0;
while((i<=L->length)&&(L->data[i])!=e){
i++;
}
if(i<=L->length) return i+1;
else return -1;
}
//在顺序表L中第i个元素之前插入一个元素e
int InsList(SeqList *&L,int i,int e){
int k;
if((i<1||i>L->length+2)) {cout<<"插入不合法"<<endl;return -1;}
if(L->length>=maxn-1) {cout<<"表已满无法插入"<<endl;return -1;}
for(k=L->length;k>=i-1;k--){
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;
}
//在顺序表L中删除第i个元素
int DelList(SeqList *&L,int i){
int k;
if((i<1)||i>L->length+1){cout<<"删除位置不合法";return -1;}
for(k=i;k<=L->length;k++){
L->data[k-1]=L->data[k];
}
L->length--;
}
//合并顺序表
void merge(SeqList *&La,SeqList *&Lb,SeqList *&Lc){
int i=0,j=0,k=0;
while(i<=La->length-1&&j<=Lb->length-1){
if(La->data[i]<=Lb->data[j]){
Lc->data[k]=La->data[i];
i++,k++;
}
else{
Lc->data[k]=Lb->data[j];
j++,k++;
}
}
while(i<=La->length-1){
Lc->data[k]=La->data[i];
i++;k++;
}
while(j<=Lb->length-1){
Lc->data[k]=Lb->data[j];
j++,k++;
}
Lc->length=La->length+Lb->length;
}
int main(){
SeqList *La,*Lb,*Lc;
int n;cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int m;cin>>m;
for(int i=0;i<m;i++) cin>>b[i];
create(La,a,n);
create(Lb,b,m);
create(Lc,c,0);
merge(La,Lb,Lc);
printList(Lc);
}
【2020春数据结构】线性表
最新推荐文章于 2023-06-28 19:09:34 发布