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个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
C语言,我明明把单链表的某个节点删除了,但单链表写入文件时还是会写入一些奇怪的东西?
3
带头结点的循环/非循环单链表删除开始结点的时间复杂度
0
单链表实现的多项式加减法计算,输入的负号变成了正号,并且幂为负时显示错误,这个程序应该怎么改?
2
c语言 为什么函数可以返回了一个局部指针结构体?
1
单链表查找运算报SIGSEGV错误
1
单链表查找运算报SIGSEGV错误?
1
C语言:单链表输出显示问题
1
有一个单链表L,假设结点值为整,怎么设计一个尽可能高效的算法将所有值小于0的结点移到所有值大于0的结点前面?
1
c语言单链表每次进行查找操作和排序操作的时候程序就闪退
1
如何正确创建一个单链表(学生表)?
2
一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?
0
单链表中的插入和删除
3
单链表中我想删除一个数据域的值为x的节点编写了这个函数运行出来不能实现这个功能请问为什么?大佬们
1
验证线性表及其上的基本操作。
2
C语言fopen打开文件失败
1
请求大佬支援!!!单链表报错
1
请求大佬支援!!!单链表合并错误
1
小白提问-关于单链表的插入-C语言
1
C#单链表添加元素时局部变量为什么会影响整个链表?
1
【求助】单链表建立与输出错误?