程序修改如下:主要问题,1你混淆了带头结点和不带头结点的单链表的区别2在合并时PC指针后移,你可是拷贝的,写错了
#include
#include
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList CreateList (LinkList head)
{
int data;
LinkList P;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
for(int i=5;i>0;i--)
{
P=(LinkList)malloc(sizeof(LNode));
scanf("%d",&data);
P->data=data;
P->next=head->next;
head->next=P;
}
return(head);
}
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
{
LinkList pa,pb,pc;
pa=La->next;
pb=Lb->next;
Lc=pc=La;
while(pa&&pb)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(Lb);
}
void output (LinkList head)
{
LinkList P;
P=head->next;
while(P!=NULL)
{
printf("%d ",P->data);
P=P->next;
}
printf("\n");
}
int main()
{
LinkList La;
LinkList Lb;
LinkList Lc;
La=CreateList(La);
output(La);
Lb=CreateList(Lb);
output(Lb);
//printf("*******************\n");
MergeList(La,Lb,Lc);
output(Lc);
return 0;
}