鱼丸07 2020-02-03 16:31 采纳率: 33.3%
浏览 1248

C语言 一元多项式的加法运算(单链表)

#include
#include
#include
typedef struct PNode
{
float coef; //系数
int expn; //指数
struct PNode *next; //指向下一项的指针
}PNode; //一元多项式中的项

struct PNode *creatPoly(PNode *head,int n) //建立一元多项式
{
int i=1;
struct PNode *s,*pre;
head=(struct PNode *)malloc(sizeof(struct PNode));
head->next=NULL;
pre=head;
printf("请输入各项的系数与指数");
for(i=1;i<=n;i++)
{
scanf("%d%d",&pre->coef,&pre->expn);
s=(struct PNode *)malloc(sizeof(struct PNode));
pre->next=s;
pre=s;
}
pre->next=NULL;

return 0;

}
struct PNode *addPoly(PNode *L1,PNode *L2) //实现多项式加法运算
{
int sum;
struct PNode *p1,*p2,*p3,*r;

p3=p1;
p1=p1->next;
p2=p2->next;

while(p1&&p2)
{
    if(p1->expn==p2->expn)
    {
        sum=p1->coef+p2->coef;
        if(sum!=0)
        {

            p1->coef = sum;
            p3->next=p1;
            p3=p1;
            p1=p1->next;
        }

        else //(p3!=NULL)
        {
            r=p1;
            p1=p1->next;
            free(r);
        }
        r=p2;
        p2=p2->next;
        free(r);
    }
    else if (p1->expn < p2->expn && p3!=NULL)
    {
        p3->next=p1;
        p3=p1;
        p1=p1->next;
    }
    else //(p1->expn > p2->expn && p3!=NULL)
    {
        p3->next = p2;
        p3 = p2;
        p2 = p2->next;

    }
}
p3->next = p1 ? p1:p2;

free(p2);

return p1;

}

struct PNode *output(PNode *p) //打印该链表的结果
{
while(p->next!=NULL)
{
printf("%d%2d",p->coef,p->expn);
p=p->next;
}
printf(",");
return 0;
}

int main()
{
int n,m;
struct PNode *headA,*headB;
printf("请输入多项式A的项数:");
scanf("%d",&n);
creatPoly(headA,n);
printf("输出多项式A:");
output(headA);
printf("请输入多项式B的项数:");
scanf("%d",&m);
creatPoly(headB,m);
printf("输出多项式B:");
output(headB);
addPoly(headA,headB);
printf("输出两个多项式相加后的结果多项式A:");

return 0;

}

图片说明

哪位大神能帮忙看一下代码哪里出问题了吗?运行结果不正确,输出不了多项式的结果!谢谢

  • 写回答

1条回答

  • threenewbee 2020-02-04 00:11
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn