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 ...
随机推荐
- [原创]cocos2d-x研习录-第三阶 特性之调度器
在游戏中,经常会周期执行一些检测.操作或更新一些数据等,我们称之为调度.Cocos2D-x中将调度封装为类CCScheduler,方便在游戏开发中使用.我们一起来学习一下,CCScheduler具有哪 ...
- C# exe dll防止反编译-- dotNET_Reactor
新建两个VS C#工程test.sln 和 reactor.sln test工程代码中初始化时,删除reactor.exe 生成test工程 用软件 dotNET_Reactor 设置,保存成 set ...
- CentOS 6、7下pptp vpn一键安装脚本
之前有折腾过<CentOS 6.7下IPSEC/L2TP VPN一键安装脚本>,不稳定.不支持IOS,因此换成pptp,并已经添加到<lnmp一键安装包>.这个脚本可以单独使用 ...
- 【转】libevent和基于libevent的网络编程
转自: http://www.cnblogs.com/nearmeng/p/4043548.html 1 libevent介绍和安装 介绍 libevent是一个轻量级的基于事件驱动的高性能的开源网络 ...
- oracle for循环查找结果
-- Call the procedure begin ' ) loop dbms_output.put_line('v_rlt = '||v_rlt.ID||v_rlt.inspection_no) ...
- 基于Verilog HDL整数乘法器设计与仿真验证
基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...
- 15、java中的内部类介绍
内部类顾名思义就是定义在类中的类,下面做一个简单介绍: 内部类的访问规则:1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 ...
- correlation filters in object tracking2
http://www.cnblogs.com/hanhuili/p/4281077.html Correlation Filter in Visual Tracking系列二:Fast Visual ...
- es let2
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 家里蹲大学数学杂志 Charleton University Mathematics Journal 官方目录[共七卷493期,6055页]
家里蹲大学数学杂志[官方网站]从由赣南师范大学张祖锦老师于2010年创刊;每年一卷, 自己有空则出版, 没空则搁置, 所以一卷有多期.本杂志至2016年12月31日共7卷493期, 6055页.既然做 ...