#include<stdio.h>
#include<stdlib.h>
typedef struct LinkList{
int data;
struct LinkList *next;
}LNode,*LinkList;
LinkList InitList(){
LinkList L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
return L;
}
LinkList CreateList(LinkList L,int data[],int n){
LinkList r;
L = (LinkList)malloc(sizeof(LNode));
r = L;
LinkList s;
int i;
for(i = 0;i < n;i++){
s = (LinkList)malloc(sizeof(LNode));
s->data = data[i];
r->next = s;
r = s;
}
r->next = NULL;
return L;
}
void DisplayList(LinkList L){
LinkList p = L->next;
while(p != NULL){
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}
void MergeList(LinkList La,LinkList Lb,LinkList Lc){
LinkList pa = La->next;
LinkList pb = Lb->next;
LinkList pc = Lc = La;
while(pa && pb){
if(pa->data <= pb->data){
pc->next = pa;
pc = pa;
pa = pa->next;
}else{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
free(Lb);
}
int main(){
int ArrayA[] = {1,7,8};
int ArrayB[] = {2,4,6,8,10,11};
LinkList La = CreateList(La,ArrayA,3);
LinkList Lb = CreateList(Lb,ArrayB,6);
LinkList Lc = InitList();
DisplayList(La);
DisplayList(Lb);
MergeList(La,Lb,Lc);
DisplayList(Lc);
}
如下图,73行执行了合并操作,为什么75行的打印依旧为空!