【线性表】一元多项式的运算

    技术2025-04-04  18

    1、建立一元多项式的链式存储结构

    Polylist polycreate(Polylist head){ Polylist *rear, *new_node; int c,e; rear=head=(Polynode *)malloc(sizeof(Polynode)); cin>>c>>e;//输入系数和指数 while(c!=0){ //建立新项 new_node=(Polynode)malloc(sizeof(Polynode)); new_node->coef=c; new_node->exp=e; //尾插 rear->next=new_node; rear=s; cin>>c>>e; } rear->next=NULL; return (head); }

    2、两个一元多项式相加

    思路:将两个多项式从头扫描,指数相同项相加,如果为0则释放该空间,如果非0则构成一项,最终指数不同的项按指数升序排列。 用变量p、q分别指向链A、B中的第一结点,把结果存放在A中。若p->next < q->next 说明p是其中一项,p后移;若p->next > q->next 说明q是其中一项,q后移。

    void polyadd(Polylist a, Polylist b){ Polynode *p=a->next, *q=b->next, *tail=a; while(p!=NULL&&q!=NULL){ if(p->exp<q->exp){ //尾插p tail->next=p; tail=p; p=p->next; }else if(p->exp==q->exp){ if((sum=p->coef+q->coef)!=0){ p->coef=sum; //尾插 tail->next=p; tail=p; p=p->next; //删除q temp=q; q=q->next; free(temp); }else{ temp=p; p=p->next; free(temp); temp=q; q=q->next; free(temp); } }else if(p->exp>q->exp){ //尾插q tail->next=q; tail=q; q=q->next; } } //A B还有剩 if(p) pre->next=p; else pre->next =q; }
    Processed: 0.009, SQL: 9