多项式相乘

本文介绍了一种使用链表存储结构实现多项式相乘的算法。通过遍历两个多项式的每一项,计算乘积并合并结果到新的链表中,确保了结果的正确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//存储结构
struct PolyNode{
    int coef;//系数
    int expon;//指数
    PolyNode * next;//指针域
}

//多项式相乘
PolyNode* Multiply(PolyNode* L1,PolyNode* L2){
    PolyNode *t1,*t2,*t,*rear,*L;
    int c,e;
    L=(PolyNode*)malloc(sizeof(PolyNode));
    L->next=NULL;    
    t1=L1->next;
    t2=L2->next;
    rear=L;
    if(!t1||!t2) return NULL;//其中一个多项式为空,则结果为空
    while(t1){
        while(t2){
            c=t1->coef*t2->coef;
            e=t1->expon+t2->expon;
            while(rear->next&&rear->next->expon>e)//找到小于等于e的第一个结点
                rear=rear->next;
            if(rear->next&&rear->next->expon==e){
                if(c+rear->next->coef!=0) rear->next->coef+=c;
                else{
                    t=rear->next;
                    rear->next=t->next;
                    free(t);
                }      
            }   
            else{
                t=(PolyNode*)malloc(sizeof(PolyNode));
                t->coef=c;
                t->expon=e;
                t->next=rear->next;
                rear->next=t; 
            }
            t2=t2->next;
            rear=L;
        }
        t1=t1->next;
        t2=L2->next;
    }
    return L;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值