线性表的合并

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;ilength-1;i++)

{cout<elem[i]<<"→"; }

cout<elem[i];

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");

}

相关文档
最新文档