⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.cpp

📁 一元多项式的求积
💻 CPP
字号:
#include<stdio.h>
struct polynome{
int a;
int b;
polynome *next;
};
polynome *InitPoly(int n)
{   polynome *head,*p;
    p=new polynome;
    head=p;
    for(int i=n-1;i>=-1;i--)
    {   p->next=new polynome;
        p->next->a=i;
        p->next->b=i;
        p=p->next;
    }
    return head;
}
int PolyLength(polynome *p)
{   int i=0;
    while(p->next->b!=-1)
    {   i++;
        p=p->next;
    }
    return i;
}
int del(polynome *p)
{   polynome *temp;
    while(p->b!=-1)
    {   temp=p->next;
        delete p;
        p=temp;
    }
    delete p;
    return 1;
}
char Compare(int a,int b)
{   if(a>b) return('>');
    if(a==b) return('=');
    if(a<b) return('<');
}
int Plus(polynome *p1,polynome *p2)
{   polynome *temp;
    if(p1->next->b==-1)
        return 0;
    else 
    while(p1->next->b!=-1||p2->next->b!=-1)    
    {   
            switch(Compare(p1->next->b,p2->next->b))
            {   case '>' :
                    temp=p2->next;
                    p2->next=new polynome;
                    p2->next->next=temp;
                    p2->next->a=p1->next->a;
                    p2->next->b=p1->next->b;
                    p2=p2->next;
                    p1=p1->next;
                    break;
                case '<' :
                    p2=p2->next;
                    break;
                case '=' :
                    p2->next->a=p1->next->a+p2->next->a;
                    p1=p1->next;
                    p2=p2->next;
                    break;
            }
    }
    return 0;
}
int OneMultiply(polynome *s,polynome *in,polynome *p)
{  
    while(in->next->b!=-1)
    {   p->next->a=(s->a)*(in->next->a);
        p->next->b=s->b+in->next->b;
        in=in->next;
        p=p->next;
    }
    return 1;
}
polynome *Multiply(polynome *p1,polynome *p2)
{   polynome *head,*sum;
    sum=InitPoly(0);
    head=sum;
    if(p1->next->b==-1||p2->next->b==-1)
        return head;
    else
    {   polynome *temp;
        temp=InitPoly(PolyLength(p2));
        while(p1->next->b!=-1)
        {   OneMultiply(p1->next,p2,temp);
            Plus(temp,sum);
            p1=p1->next;
        }
        del(temp);
    }
    return head;
}
int main()
{   int j=0;
    polynome *p1,*head1,*sum,*hsum;
    polynome *p2,*head2;
    p1=new polynome;
    head1=p1;
    p2=new polynome;
    head2=p2;
    do
    {   p1->next=new polynome;
        p1=p1->next;
        scanf("%d%d",&(p1->a),&(p1->b));
    }while(p1->b!=-1);
    do
    {   p2->next=new polynome;
        p2=p2->next;
        scanf("%d%d",&(p2->a),&(p2->b));
    }while(p2->b!=-1);
    p1=head1;
    p2=head2;
    sum=Multiply(head1,head2);
    hsum=sum;
    while(sum->next->b!=-1)
    {   if(sum->next->a!=0)
        {   printf("%d %d ",sum->next->a,sum->next->b);
            j++;
        }
        sum=sum->next;
    }
    if(j==0)
        printf("0");
    del(head1);
    del(head2);
    del(hsum);
    return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -