两个单链表合并.cpp
#include "stdlib.h"
#include "stdio.h"
typedef int ElemType;
typedef struct LNode{
ElemType data ;
struct LNode *next ;
} LNode , *LinkList ;
LinkList InitList_L ( ) {
LinkList head ;
head = (LNode *) malloc( sizeof( LNode ) );
head->next = NULL;
return (head);
}
void PrintList_L (LinkList L ){
LinkList p ;
for(p=L->next ; p ; p=p->next )
printf("%8d",p->data);
printf("\n");
}
void MakeOrdderList_L (LinkList L,int n ){
int i , x ; LinkList p , q ;
q=L;
x=rand();
for(i=0;i
data=x+rand();
x=p->data;
q->next=p; q=p ;
}
q->next=NULL;
}
LinkList MergeList_L(LinkList La, LinkList Lb ) {
LinkList pa , pb , Lc, pc ;
pa=La->next ; pb=Lb->next ; Lc=pc=La ;
while( pa && pb) {
if(pa->datadata) {
pc->next=pa; pc=pa; pa=pa->next ;
}
else {
pc->next=pb; pc=pb; pb=pb->next ;
}
}
pc->next = pa ? pa : pb;
free(Lb) ;
return Lc;
}
void main(){
int x , y ;
LinkList La,Lb,Lc ;
La=InitList_L (); Lb= InitList_L ();
scanf("%d%d",&x,&y);
MakeOrdderList_L(La,x);
printf("La:");
PrintList_L(La);
MakeOrdderList_L(Lb,y);
printf("Lb:");
PrintList_L(Lb);
Lc=MergeList_L(La,Lb );
PrintList_L(Lc);
}