一元多项式的表示及相加

在这里插入图片描述
实现思路:
通过链表实现,会更为简单直观。用链表中的每个结点表示多项式中的每一项,多项式每一项都是由数据域(包含系数和指数)和指针域构成的,所以在定义表示结点的结构体时,可如下所示进行定义:

typedef struct PLnode{  //数据域,coef 表示系数,expn 表示指数  float coef;  int expn;  //指针域  struct PLnode *next;  
}PLnode,*PLinkList;  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
typedef struct PLnode{//数据域,coef 表示系数,expn 表示指数float coef;int expn;//指针域struct PLnode *next;
}PLnode,*PLinkList;//一元多项式的链表表示创建函数,输入 m 项的系数和指数,建立表示一元多项式的有序链表L
void creatpolyn(PLinkList L, int m){int i;float coef;int expn;PLinkList tail,n;L->coef = m;L->expn = -1;tail = L;for(i=1 ; i<=m ; i++){n = (PLinkList)malloc(sizeof(PLnode));scanf("%f",&coef);scanf("%d",&expn);n->coef = coef;n->expn = expn;n->next = NULL;tail->next = n;tail = n;}
}
//完成多项式相加运算,即 Lc = La + Lb,并销毁一元多项式 Lb
PLinkList addpolyn(PLinkList La , PLinkList Lb){int x,len;float y;PLinkList Lc,pa,pb,pc,u;Lc = La;len = 0;pc = Lc;//另pa,pb 指向La 、Lb 的首元结点pa = La->next;pb = Lb->next;//通过 pa,pb 遍历链表 La、Lb,只有两指针同时存在时,才需要讨论while(pa && pb){x = pa->expn-pb->expn;//判断pa 所指结点的指数与pb 所指结点指数的大小关系if(x<0){//如果小,则找去 qa 结点到Lc 上pc = pa;len++;pa = pa->next;}//如果相等,则判断两结点的系数和是否为0else if(x == 0){// 请在下面的Begin-End之间补充代码,完成一元多项式的相加。/********** Begin *********/y = pa->coef+pb->coef;if(y!=0.0){pa->coef = y; //如果不为 0,修改 pa 结点的系数值,同时链接到 LC 上pc = pa;len++;}//如果 y 值为0,则从 pc 的链表中摘除该结点,并释放该结点else{pc->next = pa->next;free(pa);}pa = pc->next; //更新完之后的pau = pb;pb = pb->next;free(u);/********** End **********/}//如果pb 所指结点指数值小,则摘取pb所指结点到 LC链表上else{u = pb->next;pb->next= pa;pc->next=pb;pc = pb;len++;pb = u;}}//由于是在 La 上进行一元多项式的加和,所以如果运行过程 pa 不再有结点,而pb 上有,则需要将pb剩余结点链接到 Lc 上if(pb){pc->next = pb;}//计算 Lc 的长度while(pc){pc = pc->next;if(pc){len++;}}//Lc 的头结点中记录Lc 链表的长度Lc->coef = len;//加和完成的同时,释放Lb 结点free(Lb);return Lc;
}
//根据链表存储信息。输出结点 q
void printpoly(PLinkList q){if(q->expn == 0){printf("%.0f",q->coef);}else if(q->expn == 1){if(q->coef == 1){printf("x");}else if (q->coef == -1){printf("-x");}else{printf("%.0f",q->coef);printf("x");}}else if (q->coef == 1){printf("x^%d",q->expn);}else if(q->coef == -1){printf("-x^%d",q->expn);}else{printf("%.0fx^%d",q->coef,q->expn);}
}
//输出一元多项式L
void printpolyn(PLinkList L){int n;PLinkList p;p = L->next;n = 0;while(p){n++;if(n == 1){printpoly(p);}else if(p->coef>0){printf("+");printpoly(p);}else{printpoly(p);}p = p->next;}
}
int main(){PLinkList La,Lb,Lc;int m,n;//根据 n 的值,创建链表Lascanf("%d",&n);La = (PLinkList)malloc(sizeof(PLnode));creatpolyn(La,n);//根据 m 的值,创建 Lbscanf("%d",&m);Lb = (PLinkList)malloc(sizeof(PLnode));creatpolyn(Lb,m);//输出La和Lbprintf("La=");printpolyn(La);printf("\nLb=");printpolyn(Lb);//计算La+Lb,结果保存在 Lc中printf("\n计算结果为:");Lc = addpolyn(La,Lb);printf("\nLc=");printpolyn(Lc);return 0;
}

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

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

相关文章

FFMPEG android mac 编译 支持DASH/OPENSSL问题汇总

一 下载源码 FFMPEG https://github.com/FFmpeg/FFmpeg/tree/release/4.3 二 编写脚本 支持https 就必须添加open SSL 的编译 具体可以查看我的另一个关于open SSL 的 然后我们配置的一些路径 涉及 ndk 的一定要查看你用的ndk 版本 是否存在这些路径这是第一步 然后如果支…

python爬虫入门

基础回顾 使用函数, 先导入, 直接点方法名使用 import math m math.log10(100) print(m)python 交互模式 input输入示例 age int(input("请输入年龄")) age 1 print(age)if else 的使用 和java一样, 只是不加括号, else if 阉割成了 elif 与或非 java : &am…

No3: 学习过程中故障成长积累

文章目录 故障积累1、编码错误导致 故障积累1、编码错误导致

5.2 Bootstrap 过渡效果(Transition)插件

文章目录 Bootstrap 过渡效果&#xff08;Transition&#xff09;插件使用案例 Bootstrap 过渡效果&#xff08;Transition&#xff09;插件 过渡效果&#xff08;Transition&#xff09;插件提供了简单的过渡效果。 注意&#xff1a;如果您想要单独引用该插件的功能&#xff0…

【ACM】—蓝桥杯大一暑期集训Day5

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前正在学习C/C、Java、算法等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&#xff…

Qt6 Qt Quick UI原型学习QML第五篇

文章目录 效果QML语法父文件 MyQML.qmlQML语法子文件 TLineEditV1.qmlQML语法子文件 TTextEdit.qml 效果 QML语法父文件 MyQML.qml import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12Window {id: windowvisible: truewidth: 600height: 600title:…

Linux系统进程概念详解

这里写目录标题 冯诺依曼体系结构操作系统(Operator System)1.概念2.目的3.管理4.系统调用和库函数概念 进程1.概念2.描述进程-PCB3.查看进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork 进程状态1.Linux内核源代码2.进程状态查看 进程优先级1.基本概念2.查看系统…

投个 3D 冰壶,上班玩一玩

本篇文章将介绍如何使用物理引擎和图扑 3D 可视化技术来呈现冰壶运动的模拟。 Oimo.js 物理引擎 Oimo.js 是一个轻量级的物理引擎&#xff0c;它使用 JavaScript 语言编写&#xff0c;并且基于 OimoPhysics 引擎进行了改进和优化。Oimo.js 核心库只有 150K &#xff0c;专门用…

5G的发展过程

目录 1.什么是5G 2.5G与4G的区别 3.5G的应用领域 4.5G给人类带来的福利 5.5G未来的发展趋势 1.什么是5G 5G技术是第五代移动通信技术&#xff0c;它是对之前的2G、3G和4G技术的升级和革新。5G技术具有更高的数据传输速度、更低的延迟和更大的网络容量&#xff0c;为人们提供…

Java-API简析_java.net.InetSocketAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131870760 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

办公软件ppt的制作

毕业找工作太难了&#xff0c;赶紧多学点什么东西吧&#xff0c;今天开始办公软件ppt的制作学习。 本文以WPS作为默认办公软件&#xff0c;问为什么不是PowerPoint&#xff0c;问就是没钱买不起&#xff0c;绝对不是不会破解的原因。 一.认识软件 在快捷工具栏中顾名思义就是一…

微服务基础理论

微服务简介 微服务Microservices之父&#xff0c;马丁.福勒&#xff0c;对微服务大概的概述如下&#xff1a; 就目前而言&#xff0c;对于微服务业界并没有一个统一的、标准的定义&#xff08;While there is no precise definition of this architectural style ) 。但通在其…

Express 框架的基本操作

目录 1、应用生成器 2、基本路由 2.1、在跟路由下配置 GET请求&#xff0c;返回对应相应内容。 2.2、在跟路由下配置 POST请求&#xff0c;返回对应相应内容。 2.3、在跟路由下配置 PUT请求&#xff0c;返回对应相应内容。 2.4、在根路由下配置DELETE请求&#xff0c;返回对…

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念&#xff1a; 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

华为鲲鹏920 aarch64 版本 Ambari HDP 下载地址

声明&#xff1a;为有效缓解各位同行兄弟们的痛&#xff0c;特推出此文 本文能够适配兼容 华为鲲鹏920 aarch64 版本&#xff0c;仅限 CentOS7、openEuler20.03-LTS 操作系统 以下是详细下载地址 1、CentOS7 aarch64版本 CentOS7 aarch64 https://mirrors.huaweicloud.com/…

《零基础入门学习Python》第054讲:论一只爬虫的自我修养2:实战

0. 请写下这一节课你学习到的内容&#xff1a;格式不限&#xff0c;回忆并复述是加强记忆的好方式&#xff01; 今天我们决定在实战中来进行学习&#xff0c;会举两个例子&#xff0c;第一个例子是我们会下载一只猫&#xff0c;第二个例子是我们用Python来模拟浏览器通过在线的…

MySQL8.0索引新特性

文章目录 1 支持降序索引2 隐藏索引 1 支持降序索引 举例&#xff1a;分别在MySQL 5.7版本和MySQL 8.0版本中创建数据表ts1&#xff0c;结果如下&#xff1a; CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc) );在MySQL 5.7版本中查看数据表ts1的结构&#xff0c;从结…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版&#xff08;以下简称为IDEA 2023&#xff09;&#xff0c;学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的&#xff0c;版本为Apache Mav…

认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发

目录 第一章、认识主被动无人机遥感数据 第二章、预处理无人机遥感数据 第三章、定量估算农林植被关键性状 第四章、期刊论文插图精细制作与Appdesigner应用开发 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多维、多地等角度&#xff0c;获取大量的…

【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】

目录 1.排序的概念及其运用1.1排序的概念1.2排序运用​​​​​​​​​​​​​​​​​​​​​1.3常见的七大排序 ​​2.直接插入排序2.1基本思想​​2.2直接插入排序2.3动图助解2.4直接插入排序源码​2.5直接插入排序的特性总结 ​​3.希尔排序( 缩小增量排序 )​​3.1希尔…