PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分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分)的更多相关文章
- PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)
原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算 (20分) 设计函数分别求两个一元多项式的 ...
- 线性结构2 一元多项式的乘法与加法运算 【STL】
02-线性结构2 一元多项式的乘法与加法运算(20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和 ...
- PTA数据结构 习题3.6 一元多项式的乘法与加法运算 (20分)
一元多项式的乘法与加法运算 https://pintia.cn/problem-sets/434/problems/5865 设计函数分别求两个一元多项式的乘积与和. 时间限制:200 ms 内存限制 ...
- 线性结构CT 02-线性结构1 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 3-04. 一元多项式的乘法与加法运算(20)(ZJU_PAT 结构体)
题目链接:http://pat.zju.edu.cn/contests/ds/3-04 设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行.每行分别先给出多项式非零项的个数.再以指数 ...
- 浙江大学PAT上机题解析之3-04. 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分 ...
- 一元多项式的乘法与加法运算 【STL-map哈希-map反向迭代器遍历 + 零多项式】
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 一元多项式的乘法与加法运算(C语言)
输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方 ...
- PAT线性结构_一元多项式求导、按给定步长反转链表、出栈序列存在性判断
02-线性结构1. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过100 ...
随机推荐
- C# 导入Excel到DataSet中
class Import { /// <summary> /// 导入Excel到DataSet中 /// </summary> /// <param name=&quo ...
- install Hadoop
Installing Java Hadoop runs on both Unix and Windows operating systems, and requires Java to beinsta ...
- tomcat解决加载JSP文件过大错误
当遇到多个Jsp include一起的时候加载时遇到如下错误: Error:SEVERE: Servlet.service() for servlet jsp threw exception org. ...
- springmvc配置servlet的拦截形式/*和/的区别
今天复制一个现有的spring-mvc的项目修改配置作为新的项目,结果悲剧了!遇到了一个小问题困扰了半天,找同事找总监都没有搞定,纠结了半天终于发现了问题所在,随笔记一下,所谓好记性不如烂博客嘛! 问 ...
- [转载]深入了解 Struts 1.1
转载自:http://www.ibm.com/developerworks/cn/java/l-struts1-1/ 摘要:作为基于 MVC 模式的 Web 应用最经典框架,Struts 已经正式推出 ...
- 【总结】总结写了3个React页面后遇到的各种坑
标签里用到<label for>的,for 要写成htmlFor 标签里的class要写成className 组件首字母一定要大写 单标签最后一定要闭合 如果html里要空格转义, 注意不 ...
- oracle之trunc与round
round(x[,y]) 功能:返回四舍五入后的值 参数:x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位. 返回: ...
- Gson--Gson解析=等号出现乱码?
GSON使用笔记(1) -- 序列化时排除字段的几种方式 --3,关于Gson解析时候特殊符号,被转义的问题,如'单引号? //Creating the JSON object, and gettin ...
- CGI
CGI的工作原理一般是这么定义的: 客户端web浏览器浏览某个主页后,利用一定的方式提交数据,并通过HTTP协议向Web服务器发出请求,服务器端的HTTP Daemon(守护进程)将描述的主页信息通过 ...
- CentOS下安装Redis及Redis的PHP扩展
1.安装Redis 1.1 如果没有安装wget,安装wget yum install wget 1.2 在http://redis.io/download页面查看redis版本,并下载安装 wget ...