输入进去了之后运行不出结果
//用链表实现多项式的合并
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
/*typedef struct stu
{
int coef;//系数
int expn;//幂指数
}elemtype;*/
typedef struct stur
{
int data;
struct stur *next;
}linklist;
jiafa(linklist *LA,linklist *LB,linklist *LC)
{
linklist *pa,*pb,*pc;
LC=(linklist*)malloc(sizeof(linklist));
pa=LA->next;
pb=LB->next;
pc=LC->next;
while(pa&&pb)
{
pc->data=pa->data+pb->data;
pa=pa->next;
pb=pb->next;
pc=pc->next;
pc=(linklist*)malloc(sizeof(linklist));
}
if(pa) pc->next=pa->next;
if(pb) pc->next=pb->next;
while(pc)
{
printf("%d",pc->data);
pc=pc->next;
}
}
main()
{
struct stur *p1,*head1,*p2,*head2,*head3;
head1=(linklist*)malloc(sizeof(linklist));
p1=head1->next;
p1=(linklist*)malloc(sizeof(linklist));
printf("输入LA的数据:\n");
scanf("%d",&p1->data);
while(p1->data)
{
p1=p1->next;
p1=(linklist*)malloc(sizeof(linklist));
printf("输入LA的数据:\n");
scanf("%d",&p1->data);
}
p1->next=NULL;
head2=(linklist*)malloc(sizeof(linklist));
p2=head2->next;
p2=(linklist*)malloc(sizeof(linklist));
printf("输入LB的数据:\n");
scanf("%d",&p2->data);
while(p2->data)
{
p2=p2->next;
p2=(linklist*)malloc(sizeof(linklist));
printf("输入LB的数据:\n");
scanf("%d",&p2->data);
}
p2->next=NULL;
jiafa(head1,head2,head3);
}
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct stur
{
int data;
struct stur *next;
}linklist;
void jiafa(linklist *LA,linklist *LB,linklist **LC)
{
linklist *pc = NULL;
linklist *tail = NULL;
while(LA&&LB)
{
pc=(linklist*)malloc(sizeof(linklist));
pc->data=LA->data+LB->data;
pc->next = NULL;
if(*LC == NULL)
*LC = pc;
else
tail->next = pc;
tail = pc;
LA=LA->next;
LB=LB->next;
}
while(LA)
{
tail->next = LA;
tail = tail->next;
LA = LA->next;
}
if(LB)
{
tail->next = LB;
}
pc = *LC;
while(pc)
{
printf("%d ",pc->data);
pc=pc->next;
}
}
void main()
{
struct stur *p1,*head1,*p2,*head2,*head3,*tail;
head1 = NULL;
head2 = NULL;
head3 = NULL;
tail = NULL;
printf("输入LA的数据:\n");
int data = 0;
scanf("%d",&data);
while(data)
{
p1 = (linklist*)malloc(sizeof(linklist));
p1->data = data;
p1->next = NULL;
if(head1 == NULL)
head1 = p1;
else
tail->next = p1;
tail = p1;
printf("输入LA的数据:\n");
scanf("%d",&data);
}
//////////////////
printf("输入LB的数据:\n");
tail = NULL;
scanf("%d",&data);
while(data)
{
p2 = (linklist*)malloc(sizeof(linklist));
p2->data = data;
p2->next = NULL;
if(head2 == NULL)
head2 = p2;
else
tail->next = p2;
tail = p2;
printf("输入LB的数据:\n");
scanf("%d",&data);
}
jiafa(head1,head2,&head3);
system("pause");
}
大改了一下,原先有一些问题。
p1=head1->next;
p1=(linklist*)malloc(sizeof(linklist));
改成
head1->next=(linklist*)malloc(sizeof(linklist));
p1=head1->next;
不然p1重新分配地址,和head1->next就没关系啦
后面while循环中也是一样的错误。顺序不对的