线性表的合并
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性表的合并实例:
#include
#include
using namespace std;
const max=100;
#define elemtype int
typedef struct
{
elemtype * elem; //线性表的基地址
int length; //线性表当前的长度
int listsize; //线性表当前分配的最大存储内容容量}SeqList;
void CreatList(SeqList *L)
{
cout<<"输入线性表当前长度:";
cin>>L->length;
//分配空间
L->elem=(int*) malloc(L->length*sizeof(int));
cout<<"请输入线性表的各个元素:";
for(int i = 0;i< L->length;i++)
{cin>>L->elem[i]; }
L->listsize = L->length;
}
void MergeSeqList(SeqList *A, SeqList *B, SeqList *C)
{
elemtype *pa, *pb, *pc, *palast, *pblast;
pa = A->elem; pb = B->elem;
C->length = A->length + B->length;
C->elem=(elemtype*)malloc(C->length*sizeof(elemtype));
if(!C->elem) exit(-1);
palast = A->elem + A->length - 1;
pblast = B->elem + B->length - 1;
pc = C->elem;
while(pa <= palast&&pb<= pblast)
{
if(*pa <= *pb)
{
*pc = *pa;
pc++;
pa++;
}
else{
*pc=*pb;
pc++;
pb++;
}
}
while(pa<=palast) {
*pc=*pa;
pc++;
pa++;
}
while(pb<=pblast)
{
*pc=*pb;
pc++;
pb++;
}
}
void DisList(SeqList *L)
{
for(int i=0;i
{cout<
cout<
cout< } void main() { SeqList A,B,C; cout<<"顺序表A:"< CreatList(&A); cout<<"顺序表B:"< CreatList(&B); MergeSeqList(&A,&B, &C); cout<<"合并后的顺序表C:"< DisList(&C); system("pause"); }