一元多项式的乘法与加法运算(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行.每行分别先给出多项式非零项的个数.再以指数 ...
随机推荐
- avascript中的this与函数讲解
徐某某 一个半路出家的野生程序员 javascript中的this与函数讲解 前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大 ...
- 在计算机 . 上没有找到服务 WAS
添加的程序不全导致或者服务没开启导致 重新打开IIS,刷新一下 发现已经可以了,不再标红报错了
- SqlServer性能检测和优化工具使用详细
工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?哥教你,首先你要知道问题出在哪里?如果想知道问 ...
- ios语音输入崩溃
游戏中任何可以输入的地方,只要调用语音输入,必然会导致app崩溃,解决方法如下: ok, so essentially the gist of it is that siri wants gl con ...
- CSS3 Media Queries实现响应式布局
概念我就不在这里写啦.大家可以看看以下网页: http://www.runoob.com/cssref/css3-pr-mediaquery.html http://www.w3cplus.com/c ...
- iOS开发之集成iOS9中的Core Spotlight Framework搜索App的内容
Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight.集成Spotlight的 ...
- Java基本语法练习
1.编写程序,求100以内的全部素数. 实验源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class F ...
- 坑爹的Maven
之前没用过Maven,最近在研究Curator的时候,导入别人的工程,但是没有相应的包,需使用Maven解决依赖.于是各种折腾,最后虽然解决了,但中间的坑还不少.尽管网上也有相应的安装教程,但很多都是 ...
- 关于java连接mysql数据库的几个问题的解决方法。
今天就为了连接下数据库获取信息来提供给ListView使用,搞了足足5小时. 出现的问题有: 第一个是,DriverManager.getConnection(url, user, pwd),这个函数 ...
- java 中多线程之间的通讯之等待唤醒机制
wait notify () nitifyAll () 都使用在同步中,因为要对持有监视器(锁)的线程操作 所以要使用在同步中,因为只有同步才具有锁 为什么这些操作线程的方法要定义object类中呢 ...