数据结构两个顺序表的合并

  • 格式:doc
  • 大小:22.00 KB
  • 文档页数:2

数据结构两个顺序表的合并.txt单身很痛苦,单身久了更痛苦,前几天我看见一头母猪,都觉得它眉清目秀的什么叫残忍? 是男人,我就打断他三条腿;是公狗,我就打断它五条腿!

#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<=n;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<=pa_last&&pb<=pb_last)

{if(*pa<=*pb) *pc++=*pa++;

else *pc++=*pb++;

}

while(pa<=pa_last) *pc++=*pa++;

while(pb<=pb_last) *pc++=*pb++;

for(i=1;i<=Lc.length;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<=n;i++)

{ La.elem[i]=rand()%1000;La.length+=1;}

for(i=1;i<=n;i++)

{ Lb.elem[i]=rand()%1000;Lb.length+=1;}

La=sortList(La,n);

Lb=sortList(Lb,n);

MergeList_Sq(La,Lb,Lc);

}