《数据结构学习与实验指导》3-4:一元多项式的乘法与加法运算
来源:互联网 发布:全民奇迹服务端源码 编辑:程序博客网 时间:2024/06/05 20:35
实验内容:分别求两个一元多项式的乘积与和。
输入说明:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数。数字间以空格分隔。
输出说明:输出分2行,分别以指数递降方式输出乘积多项式与和多项式的系数和指数。数字间以空格分隔,但结尾不能有多余空格。
测试用例:
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
18 2 -6 1 5 20 -4 4 -5 2 9 1 -20
2 1 2 1 0
2 1 2 -1 0 |
1 4 -1 0
2 2
2 -1000 1000 1000 0
2 1000 1000 -1000 0 |
-1000000 2000 2000000 1000 -1000000 0
0 0
0
1 199 1000 |
0 0
999 1000
#include <stdio.h>#include <stdlib.h>typedef struct Node { int cn; int en; struct Node *next;} *PNode, *PLink;PLink init();void add(PLink link, int cn, int en);void insert(PLink link, int cn, int en);void release(PLink link);void print(PLink link);void plus(PLink link1, PLink link2);PLink mutiply(PLink link1, PLink link2);int main() { int N; int c, e; scanf("%d", &N); PLink link1 = init(); for (int i = 0; i < N; i++) { scanf("%d %d", &c, &e); add(link1, c, e); } insert(link1, 0, 0); scanf("%d", &N); PLink link2 = init(); for (int i = 0; i < N; i++) { scanf("%d %d", &c, &e); add(link2, c, e); } insert(link2, 0, 0); PLink link4 = mutiply(link1, link2); print(link4); plus(link1, link2); print(link2); release(link1); release(link2); release(link4); return 0;}PLink init() { PNode Node_3_4 = (PNode) malloc(sizeof(PNode)); Node->next = NULL; return Node;}void add(PLink link, int cn, int en) { PNode node = (PNode) malloc(sizeof(PNode)); node->cn = cn; node->en = en; node->next = NULL; PNode p = link; while (p->next != NULL) { p = p->next; } p->next = node;}void insert(PLink link, int cn, int en) { PNode node = (PNode) malloc(sizeof(PNode)); node->cn = cn; node->en = en; node->next = NULL; PNode pp = link; PNode p = link->next; while (p != NULL) { if (p->en > en) { pp = pp->next; p = p->next; } else if (p->en < en) { node->next = p; pp->next = node; return; } else { p->cn += cn; return; } } pp->next = node;}void release(PLink link) { PNode p = link; while (p->next != NULL) { PNode pp = p; p = p->next; free(pp); }}void print(PLink link) { PNode p = link; if (p->next != NULL) { p = p->next; printf("%d", p->cn); if (p->cn != 0) { printf(" %d", p->en); } else { printf(" 0"); } } while (p->next != NULL) { p = p->next; if (p->cn != 0) { printf(" %d %d", p->cn, p->en); } } printf("\n");}void plus(PLink link1, PLink link2) { PNode p = link1; while (p->next != NULL) { p = p->next; insert(link2, p->cn, p->en); }}PLink mutiply(PLink link1, PLink link2) { PLink link3 = init(); PNode p1 = link1->next; while (p1 != NULL) { PNode p2 = link2->next; while (p2 != NULL) { int c = p1->cn * p2->cn; int e = p1->en + p2->en; insert(link3, c, e); p2 = p2->next; } p1 = p1->next; } return link3;}
阅读全文
0 0
- 《数据结构学习与实验指导》3-4:一元多项式的乘法与加法运算
- <数据结构学习与实验指导>3-3银行业务队列模拟/3-4一元多项式的乘法与加法运算
- [数据结构]-- PTA一元多项式的乘法与加法运算
- [数据结构]-- PTA一元多项式的乘法与加法运算
- 实验项目3-4:一元多项式的乘法与加法运算
- 实验项目 3-4:一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的加法与乘法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 一元多项式的乘法与加法运算
- 《数据结构学习与实验指导》3-1:一元多项式求导
- PAT3-04. 一元多项式的乘法与加法运算
- PTA 一元多项式的乘法与加法运算
- Linux中的sed常用技巧
- Vue基本开发环境搭建
- 深入理解Java类加载器(2):线程上下文类加载器
- 将项目上传至github
- 【51Nod】1081 子段求和
- 《数据结构学习与实验指导》3-4:一元多项式的乘法与加法运算
- c++ error records
- centos安装twemproxy实现分布式缓存
- C++深拷贝和浅拷贝
- 淘淘商城项目系列-1.Eclipse开发环境配置
- Your system is running in low-graphics mode
- github push 出错:fatal: Authentication failed for 'https://github.com/ ..的解决
- C语言几种输入函数的比较
- Redis测试分析(pipeline模式推荐)