线性表的排序与合并(C语言)

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

线性表的排序与合并(C语言)

#include "stdio.h"

#include "malloc.h"

#include "stdlib.h"

#define maxsize 1024

typedef int datatype;

typedef struct

{datatype data[maxsize];

int last;

} sequenlist;

void creatlist (sequenlist *L)

{ int n,i;

int tmp;

printf("请输入表数据的个数:\n"); scanf("%d",&n);

printf("请输入数据:\n");

for(i=0;i

{ fflush(stdin);

scanf("%d",&tmp);

L->data[i]=tmp;

}

L->last=n-1;

printf("\n");

}

void creatlistmerge (sequenlist *L) { int n,i;

printf("请输入表数据的个数:\n"); scanf("%d",&n);

for(i=0;i

{fflush(stdin);

L->data[i]=0;

}

L->last=n-1;

}

void printout (sequenlist *L)

{ int i;

for(i=0;i<=L->last;i++)

{ printf("data[%d]=",i);

printf("%d\n",L->data[i]);

}

}

void sort(sequenlist *L)

{int i, j;

datatype a;

for(i=0;ilast;i++)

for(j=0;jlast-i;j++)

if(L->data[j]>L->data[j+1])

{a=L->data[j];

L->data[j]=L->data[j+1];

L->data[j+1]=a;

}

}

void merge(sequenlist *L1,sequenlist *L2,sequenlist *L3) {int i;

for(i=0;i<=L1->last;i++)

L3->data[i]=L1->data[i];

for(i=0;i<=L2->last;i++)

L3->data[i+(L1->last)+1]=L2->data[i];

}

void main()

{sequenlist *L1,*L2,*L3;

int i;

L1=(sequenlist*)malloc(sizeof(sequenlist));

L2=(sequenlist*)malloc(sizeof(sequenlist));

L3=(sequenlist*)malloc(sizeof(sequenlist));

printf("第一张表:\n");

creatlist(L1);

printf("第二张表:\n");

creatlist(L2);

printf("第一张表为:\n");

printout(L1);

printf("\n");

printf("第二张表为:\n");

printout(L2);

printf("\n");

creatlistmerge(L3);

sort(L1);

sort(L2);

printf("排序后的第一张表为:\n");

printout(L1);

printf("排序后的第二张表为:\n");

printout(L2);

printf("\n");

merge(L1,L2,L3);

printf("合并表为:\n"); printout(L3);

sort(L3);

printf("排序后的总表为:\n"); printout(L3);

}

相关文档
最新文档