帮我看看C语言代码有什么问题(数据结构的)

来源:百度知道 编辑:UC知道 时间:2024/07/07 15:23:18
#include <stdio.h>
#include <stdlib.h>

typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;

void show(LinkList *La, LinkList *Lb);//排序函数
int main()
{
LinkList *La, *Lb, *p, *q;
La=(LinkList *)malloc(sizeof(LinkList));
La->next=NULL;
Lb=(LinkList *)malloc(sizeof(LinkList));
Lb->next=NULL;
p=La;
for(int i=0; i<5; i++)
{
q=(LinkList *)malloc(sizeof(LinkList));
q->data=i*2+1;
q->next=NULL;
p->next=q;
p=p->next;
}//构造La递增
p=Lb;
for(i=1; i<5; i++)
{
q=(LinkList *)malloc(sizeof(LinkList));
q->data=i+4;
q->next=NULL;
p->next=q;
p=p->next;
}//构造Lb递增 且与a不同
printf("\nLa:\n");
for(p=La->next; p!=NULL; p=p->next)
{
printf("%d ", p->data);
}
printf("\nLb:&#

有两处错误,参见注释。

void show(LinkList *La, LinkList *Lb)
{
LinkList *pa=La;
LinkList *pb=Lb;
LinkList l;
LinkList *pc=&l;
//LinkList *pc=La; //这样会造成循环
while (pa && pb)
{
if (pa->data==pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
LinkList * tpb=pb;
pb=pb->next;
free(tpb);
}
else if (pa->data < pb->data)
{
LinkList *tpa=pa;
pa=pa->next;
free(tpa);
}
else
{
LinkList *tpb=pb;
pb=pb->next;
free(tpb);
}
}

while (pa)
{
LinkList * tpa=pa;
pa=pa->next;
free(tpa);
}
while (pb)
{