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

输入格式:

输入分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
================================================================================第一次code:
 #include <stdio.h>
 #include <stdlib.h>

 /* run this program using the console pauser or add your own getch, system("pause") or input loop */

 /*
     定义链表结构
 */
 typedef struct Node *Ptrnomial;
 typedef Ptrnomial LinkList;  //头结点
 typedef Ptrnomial Position;//中间节点
 struct Node
 {
     int coef;  /*系数*/
     int expon;  /*指数*/
     Position link;
 };

 LinkList Read();
 void Print(LinkList L);
 LinkList Multiplication(LinkList L1,LinkList L2);    /*乘法*/
 LinkList Add(LinkList L1,LinkList L2);  /*加法*/

 int main(void)
 {
     LinkList L1,L2,L3,L4;
     L1 = Read();
     L2 = Read();
     L3 = Add(L1,L2);
     L4 = Multiplication(L1,L2);
     Print(L4);
     printf("\n");
     Print(L3);
     ;
 }
 LinkList Read()
 {
     int n,c,e;
     scanf("%d",&n);
     LinkList L,Rear,p;
     L = (Ptrnomial)malloc(sizeof(struct Node));
     Rear = L;
     while(n--)
     {
         p = (Ptrnomial)malloc(sizeof(struct Node));
         scanf("%d %d",&c,&e);
         p->coef = c;
         p->expon = e;
         Rear->link = p;
         Rear = p;
     }
     Rear->link = NULL;
     return L;
 }
 void Print(LinkList L)
 {
     LinkList L1;
     L1 = L->link;
     ;
     if( !L1 )    /*意思是L1为空时*/
     {
         printf("0 0");
         return ;
     }
     while( L1 )  /*意思是L1不为空时*/
     {
         if(!flag)
         {
             flag = ;
         }
         else
         {
             printf(" ");
         }
         printf("%d %d",L1->coef,L1->expon);
         L1 = L1->link;
     }
 }
 /*多项式相乘*/
 LinkList Multiplication(LinkList L1,LinkList L2)
 {
     Position l1,l2;
     LinkList l,temp,r,p;
     l1 = L1->link;
     l2 = L2->link;
     l = (struct Node*)malloc(sizeof(struct Node));
     l->link = NULL;
     if( !l1 || !l2)
     {
         return l;
     }
     while( l1 )
     {
         temp = (struct Node*)malloc(sizeof(struct Node));
         r = temp;
         l2 = L2->link;
         while( l2 )
         {
             p = (struct Node*)malloc(sizeof(struct Node));
             p->expon = l1->expon + l2->expon;
             p->coef = l1->coef * l2->coef;
             l2 = l2->link;
             r->link = p;
             r = p;
         }
         r->link = NULL;
         l = Add(l,temp);
         l1 = l1->link;
     }
     return l;
 }
 /*多项式相加*/
 LinkList Add(LinkList L1,LinkList L2)
 {
     int sum;
     Position l1, l2;
     LinkList l,r,p;
     l1 = L1->link;
     l2 = L2->link;
     l = (struct Node*)malloc(sizeof(struct Node));
     r = l;
     while( l1 && l2)
     {
         /*当两个多项式都存在时*/
         p = (struct Node*)malloc(sizeof(struct Node));
         if(l1->expon == l2->expon)
         {
             /*系数相等时*/
             sum = l1->coef + l2->coef;
             if( sum )
             {
                 p->expon = l1->expon;
                 p->coef = sum;
                 r->link = p;
                 r = p;
             }
             l2 = l2->link;
             l1 = l1->link;
         }
         else if(l1->expon < l2->expon)
         {
             p->expon = l2->expon;
             p->coef = l2->coef;
             l2 = l2->link;
             r->link = p;
             r = p;
         }
         else
         {
             p->expon = l1->expon;
             p->coef = l1->coef;
             l1 = l1->link;
             r->link = p;
             r = p;
         }
     }
     if( l2 == NULL)
     {
         while( l1 )
         {
             p = (struct Node*)malloc(sizeof(struct Node));
             p->expon = l1->expon;
             p->coef = l1->coef;
             l1 = l1->link;
             r->link = p;
             r =p ;
         }
     }
     if( l1 == NULL)
     {
         while( l2 )
         {
             p = (struct Node*)malloc(sizeof(struct Node));
             p->expon = l2->expon;
             p->coef = l2->coef;
             l2 = l2->link;
             r->link = p;
             r =p ;
         }
     }
     r->link = NULL;
     return l;
 }

PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)的更多相关文章

  1. PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)

    原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算   (20分) 设计函数分别求两个一元多项式的 ...

  2. 线性结构2 一元多项式的乘法与加法运算 【STL】

    02-线性结构2 一元多项式的乘法与加法运算(20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和 ...

  3. PTA数据结构 习题3.6 一元多项式的乘法与加法运算 (20分)

    一元多项式的乘法与加法运算 https://pintia.cn/problem-sets/434/problems/5865 设计函数分别求两个一元多项式的乘积与和. 时间限制:200 ms 内存限制 ...

  4. 线性结构CT 02-线性结构1 一元多项式的乘法与加法运算

    设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...

  5. 3-04. 一元多项式的乘法与加法运算(20)(ZJU_PAT 结构体)

    题目链接:http://pat.zju.edu.cn/contests/ds/3-04 设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行.每行分别先给出多项式非零项的个数.再以指数 ...

  6. 浙江大学PAT上机题解析之3-04. 一元多项式的乘法与加法运算

    设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分 ...

  7. 一元多项式的乘法与加法运算 【STL-map哈希-map反向迭代器遍历 + 零多项式】

    设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...

  8. 一元多项式的乘法与加法运算(C语言)

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

  9. PAT线性结构_一元多项式求导、按给定步长反转链表、出栈序列存在性判断

    02-线性结构1. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过100 ...

随机推荐

  1. NTP时间同步服务器设置

    一.Window Server设置 [服务器端设置]1) 修改注册表以下键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\ ...

  2. python-语句

    assert语句 用来声明某个条件是真的.例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句.当 ...

  3. 解决ideviceinstaller未安装的问题

    在Mac上,使用Appium时提示: Could not initialize ideviceinstaller; make sure it is installed and works on you ...

  4. JQuery实现列表中复选框全选反选功能封装

    我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...

  5. SQL Server常用的性能诊断语句

    /* 常规服务器动态管理对象包括: dm_db_*:数据库和数据库对象 dm_exec_*:执行用户代码和关联的连接 dm_os_*:内存.锁定和时间安排 dm_tran_*:事务和隔离 dm_io_ ...

  6. 【SharePoint学习笔记】第4章 SharePoint UI 定制

    第4章 SharePoint UI 定制   SharePoint 与 ASP.NET     好的​Asp.Net人员很快就能成为好的SharePoint开发人员     Web应用程序    Mi ...

  7. Javascript模式(第三章字面量与构造函数)------读书笔记

    一 对象字面量 1.1对象字面量的语法 1,对象键值对哈希表,在其他的编程语言中称之为“关联数组”, 2 键值对里面的值,可以是原始类型也可以是其他类型的对象,称之为属性,函数称之为方法 3 自定义对 ...

  8. CentOS常见问题

    1.图形界面无法启动 检查messagebus服务是否为开机启动:chkconfig --list messagebus 如果状态为不启动,则修改之:chkconfig messagebus on 启 ...

  9. 在.htaccess文件中写RewriteRule无效的问题的解决

    近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd ...

  10. spring中订阅redis键值过期消息通知

    1.首先启用redis通知功能(ubuntu下操作):编辑/etc/redis/redis.conf文件,添加或启用以下内容(过期通知): notify-keyspace-events Ex 或者登陆 ...