已知顺序表la和lb中的元素非递减有序排列。 编写一个算法将表la和lb归并到新的顺序表lc中,要求表lc中的元素也是非递减有序排列。
0.c
#include"seqlist_def.h"
#include"stdio.h"
int merge_seqlist(SEQUENLIST *la, SEQUENLIST *lb, SEQUENLIST *lc)
{
int i,j,k;
i=j=k=1;
if(la->last +lb->last >MAXSIZE-1)
return 0;
else
{
while(i<=la->last &&j<=lb->last )
{
if(la->datas [i]<=lb->datas [j])
{
lc->datas[k]=la->datas [i];
k++;
i++;
}
else
{
lc->datas[k]=lb->datas [j];
k++;
j++;
}
}
while(i<=la->last )//lb已空
{
lc->datas [k]=la->datas [i];
k++;
i++;
}
while(j<=lb->last )//la空
{
lc->datas [k]=lb->datas [j];
k++;
j++;
}
lc->last =k-1;
return 1;
}
}
main()
{
extern int create_sortedlist(SEQUENLIST *a,int n);
extern void print_seqlist(SEQUENLIST *a);
SEQUENLIST la,lb,lc;
printf("有序表la有%d个元素:\n",4);//4表示la中元素个数,可改为任意数字
if(create_sortedlist(&la,4)!=0)//4表示la中元素个数,可改为任意数字
print_seqlist(&la);
else
return 0;
printf("\n有序表lb有%d个元素:\n",7);//7表示lb中元素个数,可改为任意数字
if(create_sortedlist(&lb,7)!=0)//7表示lb中元素个数,可改为任意数字
print_seqlist(&lb);
else
return 0;
if(merge_seqlist(&la,&lb,&lc)!=0)
{
printf("\n合并后的lc");
print_seqlist(&lc);
}
else
{
printf("la和lb无法合并");
}
return 0;
}
create_sortedlist.c
//构造有序表create_sortedlist.c
#include"seqlist_def.h"
#include"stdio.h"
void insert_x_seqlist(SEQUENLIST *a , int x)
{//在有序表中插入一个x,插入完仍有序
int i;
i=a->last;
while(x<a->datas[i])
{
a->datas[i+1]=a->datas[i];
i--;
}
a->datas[i+1]=x;
a->last++;
}
int create_sortedlist(SEQUENLIST *a,int n)
{
int x,i=1;
if(n>=1)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
a->datas[1]=x;
a->last=1;
i=2;
while(i<=n)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
insert_x_seqlist(a,x);
i++;
}
return 1;
}
else
return 0;
}
print_seqlist.c
//打印顺序表
#include"seqlist_def.h"
#include"stdio.h"
void print_seqlist(SEQUENLIST *a)
{//依次打印顺序表a中的所有元素
int i;
printf("表中各元素为:");
for(i=1;i<=a->last ;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
seqlist_def.h
//顺序表类型定义seqlist_def.h
#ifndef __SEQ_LIST_H
#define __SEQ_LIST_H
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
#endif
关注下面这个关注号,了解更多信息。
头顶渐突终不悔,代码道出我的爱。