• 十九大代表卢丽安利用周末与在沪台胞分享她参会心得  2019-05-19
  • (两会受权发布)最高人民法院院长简历 2019-05-14
  • 巫山县大峡村:深度贫困村的脱贫之变 2019-05-12
  • “关注泌尿健康”三金片媒体沙龙北京站 2019-05-09
  • 人民网评:教师欠薪为何又成新闻了? 2019-05-07
  • 涪陵:全国人大代表刘家奇院坝讲“两会” 乡亲点赞“六子致富经” 2019-05-07
  • 海南将与香港携手开拓国际客源市场--旅游频道 2019-05-01
  • 赵孟頫:书法大师是怎么炼成的? 2019-04-28
  • 只看到“贫穷”而看不到“富裕”,只看到贫富差别而看不到其根源是社会财富被个人占为私有的私有制,都是片面错误的。 2019-04-25
  • 紫光阁中共中央国家机关工作委员会 2019-04-25
  • 大众因“排放门”被罚10亿欧元 外媒:处罚还没完 2019-04-11
  • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-04-09
  • 西安启动唐长安城明德门遗址保护工程 2019-04-07
  • 2019款沃尔沃S60高性能版官图发布 本月20号正式亮相 2019-04-07
  • 银保监会新规剑指大企业多头融资和过度融资 2019-04-03
  • 今天看啥
      热点:

        新疆35选7的开奖号 www.ts3ne.com

        求两个一元多项式的乘积与和(C语言),多项式乘积c语言


        设计函数分别求两个一元多项式的乘积与和。

        输入格式:

        输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

        输出格式:

        输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。

        输入样例:

        4 3 4 -5 2  6 1  -2 0
        3 5 20  -7 4  3 1
        

        输出样例:

        15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
        5 20 -4 4 -5 2 9 1 -2 0

        好不容易搞明白了,代码如下:
        #include <stdio.h>
        #include <stdlib.h>
        
        typedef struct PolyNode *Polynomial;
        struct PolyNode {
            int coef;
            int expon;
            Polynomial link; 
        };
        
        void Attach(int c,int e,Polynomial *pRear) {
            Polynomial P;
            P=(Polynomial)malloc(sizeof(struct PolyNode));
            P->coef=c;
            P->expon=e;
            P->link=NULL;
            (*pRear)->link=P; /*P指向的新结点插入到当前尾项的后面*/
            *pRear=P;   /*pRear指针移动到 P结点*/
        }
        
        int Compare(int a,int b){
            int c;
            if (a>b) c=1;
            else if (a<b) c=-1;
            else c=0;
            return c;
        }
        
        Polynomial ReadPoly(){
            Polynomial P,Rear,t;
            int c,e,N;
            
            scanf("%d",&N);
            P=(Polynomial)malloc(sizeof(struct PolyNode));/*链表头空结点*/
            P->link=NULL;
            Rear=P;
            while(N--){
                scanf("%d %d",&c,&e);
                Attach(c,e,&Rear);   /*将当前项插入多项式尾部*/
            } 
            t=P;P=P->link;free(t); /*删除临时生成的头结点*/
            return P;
        }
        
        Polynomial Add(Polynomial P1,Polynomial P2){
            Polynomial front,rear,temp;
            int sum;
            rear=(Polynomial)malloc(sizeof(struct PolyNode));
            front=rear;//front 用来记录链表头结点
            while(P1&&P2){
        
                switch(Compare(P1->expon,P2->expon)){
                    case 1:
                        Attach(P1->coef,P1->expon,&rear);
                        P1=P1->link;
                        break;
                    case -1:
                        Attach(P2->coef,P2->expon,&rear);
                        P2=P2->link;
                        break;
                    case 0:
                        sum=P1->coef+P2->coef;
                        if (sum){
                            Attach(sum,P1->expon,&rear);
                        }
                        P1=P1->link;
                        P2=P2->link;
                        break;
                    
                }
            }
            for(;P1;P1=P1->link) Attach(P1->coef,P1->expon,&rear);
            for(;P2;P2=P2->link) Attach(P2->coef,P2->expon,&rear);
            rear->link=NULL;
            temp=front;
            front=front->link;
            free(temp);
            return front;
        } 
        
        Polynomial Mult(Polynomial P1,Polynomial P2){
            Polynomial P,Rear,t1,t2,t;
            int c,e;
            if (!P1||!P2) return NULL;//判断如果P1或者P2有一个为NULL,则结果为NULL; 
            
            t1=P1;t2=P2;
            P=(Polynomial)malloc(sizeof(struct PolyNode));
            P->link=NULL;
            Rear=P;
            while(t2){
                Attach(t1->coef*t2->coef,t1->expon+t2->expon,&Rear);
                t2=t2->link;
            } 
            t1=t1->link;//t1已经乘好,后移 
            while (t1){
                t2=P2;Rear=P;
                while(t2){
                    e=t1->expon+t2->expon;
                    c=t1->coef*t2->coef;
                    while(Rear->link && Rear->link->expon>e)
                    Rear=Rear->link;//当相乘得到的 e小于多项式系数时,Rear指针往后移 
                    if(Rear->link && Rear->link->expon==e){
                        if(Rear->link->coef+c)
                            Rear->link->coef+=c;//如果多项式系数的和不为 0,则用新的系数赋值 
                        else{
                            t=Rear->link;
                            Rear->link=t->link;
                            free(t);//如果多项式的系数为0,则 Rear指针指向下一个项,这个结点释放 
                        }
                    }
                    else{
                        t=(Polynomial)malloc(sizeof(struct PolyNode));
                        t->coef=c;t->expon=e;
                        t->link=Rear->link;
                        Rear->link=t;Rear=Rear->link;//如果多项式没有到最后并且目前没有这一项,则分配内存空间,新建结点,并将结点插入链表,Rear指针指到新结点 t 
                    } 
                t2=t2->link;     
                }
            t1=t1->link;    
            }
        t2=P;P=P->link;free(t2);
        return P;
        }
        
        void PrintPoly(Polynomial P){
            int flag=0;  //用于辅助调整输出格式
            
            if(!P) {printf("0 0\n");return;}
            
            while (P){
                if(!flag) flag=1;
                else printf(" ");
                printf("%d %d",P->coef,P->expon);
                P=P->link;
            }
            printf("\n");
        } 
        
        int main()
        {
            Polynomial P1,P2,PP,PS;
            P1=ReadPoly();
            P2=ReadPoly();
            PP=Mult(P1,P2);
            PrintPoly(PP);
            PS=Add(P1,P2);
            PrintPoly(PS);
            
            return 0;
        }

         

         
         

        新疆35选7的开奖号 www.ts3ne.comtrue//www.ts3ne.com/Cyy/1316438.htmlTechArticle求两个一元多项式的乘积与和(C语言),多项式乘积c语言 设计函数分别求两个一元多项式的乘积与和。 输入格式: 输入分2行,每行分别先给...

        相关文章

          暂无相关文章
        相关搜索:

        帮客评论

        视觉看点
      • 十九大代表卢丽安利用周末与在沪台胞分享她参会心得  2019-05-19
      • (两会受权发布)最高人民法院院长简历 2019-05-14
      • 巫山县大峡村:深度贫困村的脱贫之变 2019-05-12
      • “关注泌尿健康”三金片媒体沙龙北京站 2019-05-09
      • 人民网评:教师欠薪为何又成新闻了? 2019-05-07
      • 涪陵:全国人大代表刘家奇院坝讲“两会” 乡亲点赞“六子致富经” 2019-05-07
      • 海南将与香港携手开拓国际客源市场--旅游频道 2019-05-01
      • 赵孟頫:书法大师是怎么炼成的? 2019-04-28
      • 只看到“贫穷”而看不到“富裕”,只看到贫富差别而看不到其根源是社会财富被个人占为私有的私有制,都是片面错误的。 2019-04-25
      • 紫光阁中共中央国家机关工作委员会 2019-04-25
      • 大众因“排放门”被罚10亿欧元 外媒:处罚还没完 2019-04-11
      • 俄罗斯足球队50横扫沙特队真是让人大饱眼福,特提精神!俄罗斯是战斗民族名不虚传。 2019-04-09
      • 西安启动唐长安城明德门遗址保护工程 2019-04-07
      • 2019款沃尔沃S60高性能版官图发布 本月20号正式亮相 2019-04-07
      • 银保监会新规剑指大企业多头融资和过度融资 2019-04-03