数据结构两个顺序表的合并
#include
#include
#define LIST_INIT_SIZE 20
typedef struct
{ int *elem;
int length;
int listsize;
}Sq_List;
Sq_List InitList_Sq(Sq_List L);
Sq_List sortList(Sq_List L);
void MergeList_Sq(Sq_List La,Sq_List Lb,Sq_List &Lc);
Sq_List InitList_Sq(Sq_List L)
{
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L.elem) exit(0);
L.length=0;
L.listsize=LIST_INIT_SIZE;
return(L);
}
Sq_List sortList(Sq_List L,int n)
{int i,j,t;
for (i=n;i>=1;i--)
for(j=1;j
if(L.elem[j]>L.elem[j+1])
{t=L.elem[j+1];L.elem[j+1]=L.elem[j];L.elem[j]=t;} for(i=1;i
printf("%3d ",L.elem[i]);
printf("\n");
return(L);
}
void MergeList_Sq(Sq_List La,Sq_List Lb,Sq_List &Lc) {int *pa,*pb,*pc;
int *pa_last,*pb_last;
int i;
pa=La.elem;
pb=Lb.elem;
Lc.listsize=Lc.length=La.length+Lb.length;
pc=Lc.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); if(!Lc.elem) exit(0);
pa_last=La.elem+La.length;
pb_last=Lb.elem+Lb.length;
while(pa
{if(*pa
else *pc++=*pb++;
}
while(pa
while(pb
for(i=1;i
printf("%3d ",Lc.elem[i+1]);
}
void main()
{Sq_List La,Lb,Lc;
int n=10;
int i;
La=InitList_Sq(La);
Lb=InitList_Sq(Lb);
for(i=1;i
{ La.elem[i]=rand()%1000;La.length+=1;} for(i=1;i
{ Lb.elem[i]=rand()%1000;Lb.length+=1;} La=sortList(La,n);
Lb=sortList(Lb,n);
MergeList_Sq(La,Lb,Lc);
}