一元多项式的乘法与加法运算(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> //#include <dos.h> typedef struct polyNode{ int coef; int exp; struct polyNode *next; }polyNode, *polyList; void DestroyList(polyList L); void printList(polyList L); polyList creatList(int n); polyList add(polyList a, polyList b); polyList mul(polyList a, polyList b); int main() { int n1, n2, i; polyList a, b, L1, L2; scanf("%d", &n1); a = creatList(n1); scanf("%d", &n2); b = creatList(n2); L1 = mul(a, b); L2 = add(a, b); printList(L1); printf("\n"); printList(L2); DestroyList(L1); DestroyList(L2); //system("pause"); ; } void DestroyList(polyList L) { polyNode * tmp; while (L) { tmp = L->next; free(L); L = tmp; } } polyList creatList(int n) { polyNode *head, *r, *p; int coef, exp; head = (polyNode *)malloc(sizeof(polyNode)); r = head; while (n--) { scanf("%d%d", &coef, &exp); p = (polyNode *)malloc(sizeof(polyNode)); p->coef = coef; p->exp = exp; r->next = p; r = p; } r->next = NULL; return head; } polyList add(polyList a, polyList b) { polyNode *ha, *hb, *p, *r, *h; int temp; ha = a->next; hb = b->next; h = (polyNode *)malloc(sizeof(polyNode)); r = h; while (ha != NULL && hb != NULL) { p = (polyNode *)malloc(sizeof(polyNode)); if (ha->exp < hb->exp) { p->exp = hb->exp; p->coef = hb->coef; hb = hb->next; r->next = p; r = p; } else if (ha->exp > hb->exp) { p->exp = ha->exp; p->coef = ha->coef; ha = ha->next; r->next = p; r = p; } else { temp = ha->coef + hb->coef; ) { p->exp = ha->exp; p->coef = temp; r->next = p; r = p; } ha = ha->next; hb = hb->next; } } while ( hb != NULL ) { p = (polyNode *)malloc(sizeof(polyNode)); p->exp = hb->exp; p->coef = hb->coef; hb = hb->next; r->next = p; r = p; } while ( ha != NULL ) { p = (polyNode *)malloc(sizeof(polyNode)); p->exp = ha->exp; p->coef = ha->coef; ha = ha->next; r->next = p; r = p; } r->next = NULL; DestroyList(a); DestroyList(b); return h; } polyList mul(polyList a, polyList b) { polyNode *ha, *hb , *r, *p; polyList c, tempc; ha = a->next; hb = b->next; c = (polyNode *)malloc(sizeof(polyNode)); c->next = NULL; if (ha == NULL || hb == NULL) { return c; } while (ha != NULL) { tempc = (polyNode *)malloc(sizeof(polyNode)); r = tempc; hb = b->next; while (hb != NULL) { p = (polyNode *)malloc(sizeof(polyNode)); p->exp = ha->exp + hb->exp; p->coef = ha->coef * hb->coef; hb = hb->next; r->next = p; r = p; } r->next = NULL; c = add(c,tempc); ha = ha->next; } return c; } void printList(polyList L) { polyNode * x; x = L->next; if (x == NULL) { printf("0 0"); } while (x != NULL) { if (x->next == NULL) { printf("%d %d", x->coef, x->exp); } else printf("%d %d ", x->coef, x->exp); x = x->next; } }
一元多项式的乘法与加法运算(C语言)的更多相关文章
- 线性结构2 一元多项式的乘法与加法运算 【STL】
02-线性结构2 一元多项式的乘法与加法运算(20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和 ...
- PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)
原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算 (20分) 设计函数分别求两个一元多项式的 ...
- PTA数据结构 习题3.6 一元多项式的乘法与加法运算 (20分)
一元多项式的乘法与加法运算 https://pintia.cn/problem-sets/434/problems/5865 设计函数分别求两个一元多项式的乘积与和. 时间限制:200 ms 内存限制 ...
- 小白专场-多项式乘法与加法运算-c语言实现
目录 一.题意理解 二.求解思路 三.多项式的表示 3.1 数组 3.2 链表 四.程序框架搭建 五.如何读入多项式 六.如何将两个多项式相加 七.如何将两个多项式相乘 八.如何将多项式输出 一.题意 ...
- 小白专场-多项式乘法与加法运算-python语言实现
目录 题意理解 解题思路 多项式加法 多项式乘法 完整代码 题意理解 题目: 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一 ...
- PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 线性结构CT 02-线性结构1 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 浙江大学PAT上机题解析之3-04. 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分 ...
- 3-04. 一元多项式的乘法与加法运算(20)(ZJU_PAT 结构体)
题目链接:http://pat.zju.edu.cn/contests/ds/3-04 设计函数分别求两个一元多项式的乘积与和. 输入格式说明: 输入分2行.每行分别先给出多项式非零项的个数.再以指数 ...
随机推荐
- Spark算子选择策略
摘要 1.使用reduceByKey/aggregateByKey替代groupByKey 2.使用mapPartitions替代普通map 3.使用foreachPartitions替代forea ...
- sublime text3同时编辑多行
sublime text3同时编辑多行 下面的才是正确的姿势,之前一直是shift + 右键 拖啊. http://stackoverflow.com/questions/32127604/how-t ...
- junit测试,使用classpath和file 加载文件的区别
用junit测试发现一个问题,怎么加载配置文件?一直都出现这样的错误 ERROR: org.springframework.test.context.TestContextManager - Caug ...
- Linux核心源码阅读方法
首次阅读Linux4.0.5内核源代码时,一脸茫然,它的代码不仅复杂,而且庞大,找不到从哪里开始阅读. 通常Linux会有以下目录 arch 子目录包括所有和体系结构相关的核心代码.它还有更深的子目录 ...
- TSQL Merge On子句和When not matched 语义理解
Merge 的On子句指定Match condition,When子句指定过滤条件,如果Source Table和Targe Table匹配的上,很好理解:如果匹配不上,必须深入理解不匹配的条件,否则 ...
- Unity3D移植到Windows phone8 遇到的点点滴滴
LitJson.JsonMapper:Type.GetInterface(String)=>Type.GetInterface(String,Boolean) protobuf应位于Assets ...
- Hibernate注解
前言: 最近正在学习Hibernate通过注解(annotation)来管理映射关系,以前都是通过XML映射文件.下面拿个小例子说一下. 数据库物理模型: 数据库的描述: 一篇博客随笔可以分到不同的类 ...
- call,apply,bind
一.call&apply call, apply都属于Function.prototype的方法,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法 ...
- css规范
1 前言 CSS 作为网页样式的描述语言,在百度一直有着广泛的应用.本文档的目标是使 CSS 代码风格保持一致,容易被理解和被维护. 虽然本文档是针对 CSS 设计的,但是在使用各种 CSS 的预编译 ...
- C/C++ 双精度double 数据相加出错缺陷解释
不知道有没有人和我一样遇到过这样一个问题,请看下面代码. #include<iostream> using namespace std; int main(){ double a=2.3, ...