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


代码如下:

/*************************************************************************> 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;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树的同构

输入样例1&#xff08;对应图1&#xff09;&#xff1a;8A 1 2B 3 4C 5 -D - -E 6 -G 7 -F - -H - -8G - 4B 7 6F - -A 5 1H - -C 0 -D - -E 2 -输出样例1:Yes输入样例2&#xff08;对应图2&#xff09;&#xff1a;8B 5 7F - -A 0 3C 6 -H - -D - -G 4 -E 1 -8D 6 -B 5 -E - -…

.Net 中接口应用的知识点(排序)

接口 接口可以看作是多态的一种。它打破了里氏替换原则。即不是共同的生物&#xff0c;比如动物&#xff08;狗&#xff09;和人&#xff08;老师&#xff09;&#xff0c;这两个类 却都有吃这种方法。但是继承里不能把老师和狗归为一个类。所以这时用接口来解决这种问题。 语法…

leetcode 121

leetcode 121 dp? my answer class Solution { public:int maxProfit(vector<int>& prices) {int bdprices[0],sd0;int max_num0;for(int i1;i!prices.size();i){sdprices[i];if(sd<bd) bdsd;else if(sd-bd>max_num)max_numsd-bd;}return max_num;} };END

.net中的硬盘操作(针对Windows )

1&#xff0c;文件与文件夹的读取&#xff08;针对Windows &#xff09; 这是程序员的基本功。 做这种操作首先要引入一个命名空间 using System.IO I input 输入 O output 输出File.Create("C:\1.txt"); file是个静态类&#xff0c;里面有很多方法&#xff0c;多是…

优秀设计师是如何炼成的,看搜狐如何做设计

《设计之下》终于上市了&#xff0c;回忆一下整个成书的过程&#xff0c;不得不佩服作者&#xff0c;从最开始的干净利落&#xff0c;到最终的细节的调整&#xff0c;作为编辑我对他们的认识逐渐加深&#xff0c;也慢慢了解了优秀设计师是如何炼成的。 这本书源于2012年12月份的…

1092. To Buy or Not to Buy (20)

1092. To Buy or Not to Buy (20) 时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueEva would like to make a string of beads with her favorite colors so she went to a small shop to buy some beads. There were many colorful strings …

.net动态控件的使用(listview ,treeview,tabControl)

对于控件中显示的数据可能是不固定的。如果固定&#xff0c;数据发生了变化&#xff0c;又要重新设计&#xff0c;这样浪费成本&#xff0c;资源。 所以有用代码操作控件&#xff0c;自由度&#xff0c;可控度高。 1&#xff0c;树控件 //把 tv 作为全局变量 &#xff0c; 这是…

泡茶看数据结构-临时(对象设计技术)

一.开场白 第二次《DATA STRUCTURES AND PROBLEM SOVLING WITH C》英文授课&#xff0c;让我产生英文写文章的念头。但是&#xff0c;慢慢开始参合英文吧。一下子写的话&#xff0c;怕写出来博客园首页都不敢收录了。^_^&#xff01;今天&#xff0c;从课堂和自己下午看总结下,…

前端学习(1002):简洁版滑动下拉菜单问题解决

快速滑动 不停切换 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scrip…

js bom and dom

以下的代码只是一些小的例子。我画了一张图来总结js大的结构 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script>//Point 1 delayer and timer (BOM browser Object Model)var delayer;var tim…

leetcode 383 赎金信 C++

自己想的&#xff0c;一个思路两个解法&#xff0c;从字符串中的第一个唯一字符的思路搬过来的 one class Solution { public:bool canConstruct(string ransomNote, string magazine) {int table2[26]{0};for(int i0;i!magazine.length();i){table2[magazine[i]-a];}for(int …

Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类

话接上篇。成功配置好QtLuatoLua后&#xff0c;我们可以实现在Lua脚本中使用各个Qt的类。直接看代码吧。 #include "include/lua.hpp" #include <QWidget> #include <QApplication> #include <QFile> #include <QDebug>static int tolua_new…

1099. Build A Binary Search Tree (30)

1099. Build A Binary Search Tree (30) 时间限制100 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains o…

mysql列属性auto(mysql笔记四)

常见的的是一个字段不为null存在默认值 没值得时候才去找默认值&#xff0c;可以插入一个null到 可以为null的行里 主键&#xff1a;可以唯一标识某条记录的字段或者字段的集合 主键设置 主键不可为null,声明时自动设置为not null 字段上设置 字段名 primary key定义完字段后 …

详解html结构之间的各个关系,层级关系(以列表为例)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>层级关系查找元素</title></head><body><div id "div">hello<ul id ""><li>li1</li><li>li2</…

css和 js 改变html里面的定位。

css和 js 改变html里面的定位。&#xff08;三种方式&#xff09; <style type"text/css">#div1{border: 1px aquamarine solid;/*固定定位&#xff1a;此元素在整个网页的位置不变,固定某处不动*/position : fixed;left: 20px;top: 10px;}#div2{/*相对定位&am…

unity3d由多个部分组成一个角色

摘自http://forum.unity3d.com/threads/16485-quot-stitch-multiple-body-parts-into-one-character-quot So I have many many models. Each has a skeleton, material, etc. I want to take some of these and combine them into one so I can apply animation commands to …