上代码:
#include "stdio.h"
#define MAXSIZE 100
typedef int ElemType;
typedef struct{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void initList(SeqList *L);
void printList(SeqList L);
void inputData(SeqList *L);
void merge(SeqList *LA,SeqList *LB,SeqList *LC);
int main()
{
SeqList La,Lb,Lc;
initList(&La);
initList(&Lb);
initList(&Lc);
printf("请给顺序表La输入元素(按非递减顺序),输入-100表示结束\n");
inputData(&La);
printf("请给顺序表Lb输入元素(按非递减顺序),输入-100表示结束\n");
inputData(&Lb);
merge(&La,&Lb,&Lc);
printf("\nLa="); printList(La);
printf("\nLb="); printList(Lb);
printf("\nLc(La+Lb)="); printList(Lc);
getchar();
}
void initList(SeqList *L)
{
L->last=-1;
}
void inputData(SeqList *L)
{
int i=0,num;
scanf("%d",&num);
while(num!=-100)
{
L->elem[i]=num;
i++;
scanf("%d",&num);
}
L->last=i-1;
}
void printList(SeqList L)
{
int i;
printf("(");
for(i=0;i<=L.last;i++)
printf("%d ",L.elem[i]);
printf(")");
}
void merge(SeqList *LA, SeqList *LB, SeqList *LC)
{
int i,j,k;
i=0;j=0;k=0;
while(i<=LA->last&&j<=LB->last)
if(LA->elem[i]<=LB->elem[j])
{
LC->elem[k]= LA->elem[i];
i++;
k++;
}
else
{
LC->elem[k]=LB->elem[j];
j++;
k++;
}
while(i<=LA->last)
{
LC->elem[k]= LA->elem[i];
i++;
k++;
}
while(j<=LB->last)
{
LC->elem[k]= LB->elem[j];
j++;
k++;
}
LC->last=LA->last+LB->last+1;
}
贴图:
结束语:
路漫漫其修远兮 吾将上下而求索