哪位计算机高手给 看一下,我做的是数据结构的合并两个单链表,但是程序输进去不合并啊,不知道哪里出错了

2024-10-29 12:22:48
推荐回答(1个)
回答(1):

程序修改如下:主要问题,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;
}