代码如下:

/*************************************************************************> File Name: AddPoly.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: 2016年12月17日 星期六 13时00分35秒************************************************************************/#include<stdio.h>
#include <malloc.h>typedef struct PolyNode* Polynomial;
struct PolyNode {int coef;int expon;Polynomial link;
};void Print(Polynomial P)
{int i = 0;if (!P) {printf("0 0");} else {while (P) {if (i) {printf(" ");}printf("%d %d", P->coef, P->expon);P = P->link;++i;}}
}int Compare(int a, int b)
{if (a > b) {return 1;}if (a < b) {return -1;}if (a == b) {return 0;}
}void Attach(int coef, int expon, Polynomial* PtrRear)
{Polynomial P;P = (Polynomial)malloc(sizeof(struct PolyNode));P->coef = coef;P->expon = expon;P->link = NULL;(*PtrRear)->link = P;*PtrRear = P;
}Polynomial PolyAdd(Polynomial P1, Polynomial P2)
{Polynomial front, rear, temp;int sum;// 为i方便表头插入,先产生一个临时空结点作为结果多项式的链表头 rear = (Polynomial)malloc(sizeof(struct PolyNode)); front = rear;while (P1 && P2) {switch (Compare(P1->expon, P2->expon)) {case 1:Attach(P1->coef, P1->expon, &rear);P1 = P1->link;break;case -1:Attach(P2->coef, P2->expon, &rear);P2 = P2->link;break;case 0:sum = P1->coef + P2->coef;if (sum) {Attach(sum, P1->expon, &rear);}P1 = P1->link;P2 = P2->link;break;}}//将未处理完的另一个多项式的所有结点依次复制到结果链表中for (; P1; P1 = P1->link) {Attach(P1->coef, P1->expon, &rear);}for (; P2; P2 = P2->link) {Attach(P2->coef, P2->expon, &rear);}rear->link = NULL;temp = front;front = front->link; //令front指向多项式的第一项mZ    free(temp); //释放掉临时空表头结点return front;
}Polynomial PolyMult(Polynomial P1, Polynomial P2)
{Polynomial P = NULL, temp1, temp2, copyP2;copyP2 = P2;temp1 = (Polynomial)malloc(sizeof(struct PolyNode));while (P1) {P2 = copyP2;while (P2) {temp1->coef = P1->coef * P2->coef;temp1->expon = P1->expon + P2->expon;temp1->link = NULL;temp2 = P;P = PolyAdd(P, temp1);free(temp2);P2 = P2->link;}P1 = P1->link;}free(temp1);return P;
}int main()
{Polynomial P1 = NULL, P2 = NULL, sumP = NULL, multP = NULL, front = NULL, rear = NULL, tempNode = NULL;int N1, N2;int i;int temp_coef, temp_expon;scanf("%d", &N1);for (i = 0; i < N1; i++) {scanf("%d%d", &temp_coef, &temp_expon);tempNode = (Polynomial)malloc(sizeof(struct PolyNode));tempNode->coef = temp_coef;tempNode->expon = temp_expon;tempNode->link = NULL;if (i == 0) {P1 = rear = tempNode;} else {rear->link = tempNode;rear = rear->link;}}scanf("%d", &N2);for (i = 0; i < N2; i++) {scanf("%d%d", &temp_coef, &temp_expon);tempNode = (Polynomial)malloc(sizeof(struct PolyNode));tempNode->coef = temp_coef;tempNode->expon = temp_expon;tempNode->link = NULL;if (i == 0) {P2 = rear = tempNode;} else {rear->link = tempNode;rear = rear->link;}}multP = PolyMult(P1, P2);sumP = PolyAdd(P1, P2);Print(multP);printf("\n");Print(sumP);return 0;
}

实验项目 3-4:一元多项式的乘法与加法运算相关推荐

  1. 7-2一元多项式的乘法与加法运算

    title: "7-2一元多项式的乘法与加法运算(20" date: 2018-06-14T01:09:46+08:00 tags: [""] categori ...

  2. PTA:编程题:7-1 一元多项式的乘法与加法运算 (20 分)

    大一下半期数据结构 数据结构题目集 一元多项式的乘法与加法运算 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项 ...

  3. 7-2 一元多项式的乘法与加法运算 (20 分)

    7-2 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝 ...

  4. 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版

    浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版 设计函数分别求两个一元多项式的乘积与和. 本文用链表做的 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数 ...

  5. PTA->一元多项式的乘法与加法运算

    一元多项式的乘法与加法运算 1.问题描述 2.问题分析 2.1定义多项式数据结构结点数据PolyNode 2.2将数据结点连接到多项式后面Attach 2.3读入多项式数据结点ReadPoly 2.4 ...

  6. 习题3.6 一元多项式的乘法与加法运算 (20 分)(有测试点具体数据)c语言链表版本

    习题3.6 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数 ...

  7. PTA 7-1 一元多项式的乘法与加法运算 (20 分)

    设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...

  8. mooc浙大数据结构PTA习题之一元多项式的乘法与加法运算

    设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...

  9. 一元多项式的乘法与加法运算_行测数学运算之速算与技巧

    公务员考试中,计算能力是数量关系部分的基本能力,几乎所有题目最后都会转化成对计算规律的考查. (1)凑整法 凑整法:是根据数的特点,借助于数的组合.分解以及四则运算等规律,将几个数字凑成整十.整百.整 ...

最新文章

  1. CENTOS6.6下zabbix2.4.7搭建
  2. linux 查找_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国
  3. C语言3D矢量操作有关的功能(附完整源码)
  4. highroller赌城java下载,非常有用的链接
  5. 在Virtualbox下为Ubuntu16.04开机自动挂载共享目录的最佳方法
  6. 端到端的地址翻译(虚拟地址是怎样取到相应高速缓存的数据的?)
  7. IDC Q1中国云服务报告:公有云IaaS市场增速持续高于全球
  8. 不结婚不生孩子,离婚率15连涨,中国正在步入“低欲望社会”吗?
  9. for循环的使用步骤 1104
  10. ASP.NET企业开发框架IsLine FrameWork系列之二--命名空间与契约
  11. qweb加html文件,将本地html文件加载到Pyside QwebVi中
  12. 【bzoj2648】SJY摆棋子 KD-tree
  13. 三地警察抓兔子[转]
  14. (8). 使用JPA保存数据【从零开始学Spring Boot】
  15. 编译原理教程_3 词法分析
  16. java tsp问题_蚁群算法(Java)tsp问题
  17. instagram图片下载_如何使用Python下载Instagram个人资料图片
  18. 数据库新用户登录报错user test lacks create session privilege logon denied
  19. 京东云首次发布数智供应链全景图 锚定产业数字化新赛道
  20. C语言程序课程设计任务书

热门文章

  1. 前端学习(1189):事件基本使用
  2. 第十三题:子类要调用继承自父类的方法,必须使用super关键字。
  3. spring学习(3):获取bean对象
  4. 玩转oracle 11g(14):命令学习2
  5. 玩转oracle 11g(11):开启归档模式
  6. 动态规划-直方图最大长方形
  7. POJ 1300 Door Man(欧拉回路的判定)
  8. XSS与CSRF两种跨站攻击比较
  9. 几种常用的数字滤波器
  10. Sesame 2.7.0 发布,Java 的 RDF 开发包