有两张单调递增有序的线性表A和B,采用顺序存储结构,将这两张表合并成C表,要求C表单调递减有序。

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/* Note:Your choice is C IDE */ #include "stdio.h"

#include "stdlib.h"

#define OK 1

#define ERROR 0

#define TRUE 1

#define OVERFLOW -2

typedef int status;

typedef int elemtype;

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10 typedef struct{

elemtype *elem;

int length;

int listsize;

}SqList;

status InitList_Sq(SqList *L)/*构造一个空的顺序表*/ {

L->elem=(elemtype*)malloc(LIST_INIT_SIZE*sizeof(el emtype));

if(!L->elem) exit(OVERFLOW);

L->length=0;

L->listsize=LIST_INIT_SIZE;

return OK;

}

void shengcheng_Sq(SqList *L)/*建立一个顺序表,含有n个数据元素。*/

{

int m,n;

printf("please enter some data:");

scanf("%d",&n);

/*printf("请输入%d个元素:",n);*/

for(m=0;m

{

scanf("%d",&L->elem[m]);

L->length++;

}

}

void shuchu_Sq(SqList L)/*输出顺序表及顺序表的长度*/

{

int i;

/*printf("顺序表中的元素是:\n");*/

for(i=0;i< L.length;i++)

{

printf("%d", L.elem[i]);

}

printf("\n");

}

void MergeList_Sq(SqList *La,SqList *Lb,SqList *Lc)/*将两个顺序有序表A和B合并为一个有序表C。*/ {

elemtype *pa,*pb,*pc,*pa_last,*pb_last;

pa=La->elem;pb=Lb->elem;

Lc->listsize =Lc->length =La->length +Lb->length ;

pc=Lc->elem =(elemtype *)malloc(Lc->listsize *sizeof(elemtype));

if(!Lc->elem) exit(OVERFLOW);

pa_last=La->elem+La->length-1;

pb_last=Lb->elem+Lb->length-1;

while(pa<=pa_last && pb<=pb_last){

if(*pa<=*pb) *pc++=*pa++;

else *pc++=*pb++;

}

while(pa<=pa_last) *pc++=*pa++;

while(pb<=pa_last) *pc++=*pb++;

}

void nizhi_Sq(SqList *La,SqList *Lb)/*将顺序表逆置,将结果保存到另外的顺序表中。*/

{

int m,p;

InitList_Sq(Lb);

p=La->length-1;

for(m=0;m<=p;m++)

{

Lb->elem[m]=La->elem[p-m];

Lb->length++;

}

}

void main()

{

SqList La,Lb,Lc,Ld;

InitList_Sq(&La);

InitList_Sq(&Lb);

InitList_Sq(&Lc);

InitList_Sq(&Ld);

shengcheng_Sq(&La);

shuchu_Sq(La);

shengcheng_Sq(&Lb);

shuchu_Sq(Lb);

MergeList_Sq(&La,&Lb,&Lc);

shuchu_Sq(Lc);

nizhi_Sq(&Lc,&Ld);

shuchu_Sq(Ld);

}

相关文档
最新文档