用链表表示多项式,并实现多项式的加法运算
输入格式:
输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int xi;
int zhi;
struct Node *next;
}node;
node *newl(node p)
{
p=(node)malloc(sizeof(node));
p->next=NULL;
return p;
}
void get(node *p,int x,int z)
{
node l;
l=(node)malloc(sizeof(node));
l->xi=x;
l->zhi=z;
l->next=NULL;
p->next=l;
p=l;
}
void jia(node *pa,node *pb,node *pc)
{
pa=pa->next;
pb=pb->next;
while(pa!=NULL&&pb!=NULL)
{
if(pa->zhizhi)
{
get(pc,pa->xi,pa->zhi);
pa=pa->next;
}
if(pa->zhi>pb->zhi)
{
get(pc,pb->xi,pb->zhi);
pb=pb->next;
}
if(pa->zhi==pb->zhi)
{
get(pc,pa->xi+pb->xi,pa->zhi);
pa=pa->next;
pb=pb->next;
}
}
while(pa!=NULL)
{
pc->next=pa;
}
while(pb!=NULL)
{
pc->next=pb;
}
}
void put(node *p)
{
p=p->next;
while(p!=NULL){
printf("%d,%d",p->xi,p->zhi);
p=p->next;
}
}
int main()
{
node *pa,*pb,*ha,*hb;
pa=newl(pa);
pb=newl(pb);
ha=pa;
hb=pb;
int x,z;
for(int i=0;;i++)
{
scanf("%d,%d",&x,&z);
if(x==0&&z==0) break;
else get(pa,x,z);
}
for(int i=0;;i++)
{
scanf("%d,%d",&x,&z);
if(x==0&&z==0) break;
else get(pb,x,z);
}
node *pc;
node *hc;
pc=newl(pc);
hc=pc;
jia(ha,hb,pc);
put(hc);
}
一直显示段错误这是咋回事