#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct{ //线性表节点
int data[100];
int length;
}SqList;
void InitList(SqList *&L) //初始化顺序表
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void CreatList(SqList *&L) //创建顺序表
{
int i,n;
cin>>n;
L->length=n;
for(i=0;i<n;i++)
{
cin>>L->data[i];
}
}
void DispList(SqList *&L) //打印顺序表
{
int i;
for(i=0;i<L->length;i++)
{
cout<<L->data[i]<<" ";
}
}
void PaiXu(SqList *&A,SqList *&B,SqList *&C) //A,B顺序表排序并放入C顺序表
{
int i=0,j=0,k=0;
while(i<A->length && j<B->length) //A,B顺序表不为空表
{
if(A->data[i]<B->data[j])
C->data[k++]=A->data[i++];
else if(A->data[i]>B->data[j])
C->data[k++]=B->data[j++];
else if(A->data[i]==B->data[j])
{
C->data[k++]=A->data[i++];
C->data[k++]=B->data[j++];
}
}
while(i<A->length) //若A表最后一个元素最大则存入C表
C->data[k++]=A->data[i++];
while(j<B->length)
C->data[k++]=B->data[j++];
C->length=k;
}
int main()
{
SqList *A,*B,*C;
InitList(A);
InitList(B);
InitList(C);
CreatList(A);
CreatList(B);
PaiXu(A,B,C);
DispList(C);
return 0;
}
SWUST数据结构--顺序表的合并
最新推荐文章于 2024-02-29 21:28:41 发布