多项式的相加,相加到链表的尾节点的时候没办法实现 else if语句,不知道怎么办了,求大神指导

墨晟 2014-11-30 12:08:27
1.问题:利用单链表实现二个一元多项式相加。
2.输入:二个多项式的系数。
3.输出:二个多项式相加的结果。
4.例子:
5.输入 1,0,6,-5,0,0,2 (表示1+6x2-5x3+2x5)
6. -2,5,0,4 (表示-2+5x+4x3)
7.
8.输出-1,5,6,-1,0,0,2

下面是我写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAL (struct Poly *)malloc(sizeof (struct Poly))

struct Poly
{
double coef;//多项式系数
int ind;//多项式指数
struct Poly *next;
};

struct Poly *creat ()
{
struct Poly *head;
struct Poly *p1,*p2;
double a;
int n=0;
p1=p2=MAL;
head =NULL;
scanf ("%lf",&p2->coef);
p2->ind=n;
head=p1=p2;
scanf ("%lf",&a);
while (a !=1111 )
{
n=n+1;
p2=MAL;
p2->coef=a;
if (p2->coef==0)
p2->ind=0;
else
p2->ind=n;
p1->next=p2;
p1=p2;
scanf ("%lf",&a);
}
p1=p2=NULL;
return (head);
}
int main()
{
struct Poly *head,*head1,*head2;
struct Poly *p,*p1,*p2,*q;
head1=creat ();
head2=creat();
p1=head1;
p2=head2;
if (p1!= NULL&&p2 !=NULL)
{
q=p=MAL;
head=NULL;
if (p1->ind==p2->ind)
{
q->coef=p1->coef+p2->coef;
q->ind=p1->ind;
}

else if (p2==NULL && p1 !=NULL) //调试到这里就出错了
q=p1;
else if (p1==NULL && p2 !=NULL)
q=p2;
head=p=q;
while (p != NULL)
{
p1=p1->next;
p2=p2->next;
q=MAL;

if (p2!=NULL && p1 !=NULL)
{
q->coef=p1->coef+p2->coef;
q->ind=p1->ind;
}

else if (p2==NULL && p1 !=NULL)
q=p1;
else if (p1==NULL && p2 !=NULL)
q=p2;
else
q=NULL;
p->next=q;
p=q;
}}
while (p->next !=NULL)
{
p=head;
printf ("%lf",p->coef);
p=p->next;
}

getch();

}
...全文
185 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧