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