C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒
待 葡萄成熟透
但是命运入面 每个邂逅
一起走到了 某个路口
是敌与是友 各自也没有自由
位置变了 各有队友

首先,按照惯例,十分欢迎大家边听歌边观看本博客!!

最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com)

一.具体题目

请用单链表实现一元多项式的加,乘操作。提示:一元多项式中的数据项含有两个数据分别是系数与指数,为了简单起见,系数与指数都为整数。
测试数据必须要含有下面的测试结果,

开始分析我们发现其实这道题和之前的多项式输出十分类似,好吧,几乎一模一样,这就好办了,直接将那道题的思路照搬

这是洛谷专题 中我的解释,但是啊很明显的是,这个解释不能有效帮助读者很快的掌握写代码的思路,没错,即使理解了,这个思路也十分令人难受,毫无逻辑可言,甚至只能进行记忆才能解答,所以,这里我打算使用一种新的思路方便读者理解并好好敲代码

二.Try a new way

新的思路

为了追求逻辑上的连贯,所以这里先一步一步创建

通过观察,一个多项式是由几个小小的单项式组成的,

三.代码展示以及样例测试

//使用单链表实现一元多项式的加,乘操作
#include <iostream>
using namespace std;//定义一种x的几次方(单项式)的数据类型
typedef struct
{int coe;//系数 coefficientint index;//指数 index
}ElemType;//建立单链表用来表示一个多项式
typedef struct LNode
{ElemType data; //结点的数据部分,每个data是一个单项式数据类型,是一个结构体噢~struct LNode *next;
}LinkList;//初始化链表
void InitList(LinkList *&L)
{L=new LinkList;L->next=NULL;
}//插入一个数据结点e到有序链表中
void InsertList(LinkList *&L,ElemType e)
{LinkList *r,*s;//r是循环用的结点指针,s是插入的新结点r=L;//每次循环开头指向头节点//寻找新插入结点的位置(注意这是循环步骤)while(r->next!=NULL&&e.index>r->next->data.index)//以指数的大小寻找位置-ps1r=r->next;            //判断下一个指数是否相等if(r->next!=NULL&&r->next->data.index==e.index)//若指数相同r->next->data.coe+=e.coe;//则系数相加else{s=new LinkList;s->data=e;//s->data.coe=e.coe;	s->data.index=e.index;//将e的值赋给s指针所指结点s->next = r->next;r->next = s;}
} //利用链表打印多项式---ps2
void DispList(LinkList *L)
{LinkList *p=L->next;while(p){//特判系数为1,指数为0if(p->data.coe==1&&p->data.index==0)cout<<"1";//除了1和0其他都直接打,0忽略不打//普通系数打印if(p->data.coe!=0&&p->data.coe!=1)cout<<p->data.coe;//普通指数打印if(p->data.coe!=0){if(p->data.index>1)cout<<"X^"<<p->data.index;else if(p->data.index<0)cout<<"X^("<<p->data.index<<")";else if(p->data.index==1)cout<<"X";}if(p->next!=NULL&&p->next->data.coe>0)//判断是否加+cout<<"+";p=p->next;   }cout<<endl;
}
//多项式加法
void AddList(LinkList *&L1,LinkList *L2)
{LinkList *b = L2->next;while(b != NULL){InsertList(L1,b->data);//从L1表中取出每一个节点插入到L中b = b->next;}
}
//多项式乘法
void multiply(LinkList *L1,LinkList *L2,LinkList *&L3)
{LinkList *b,*a = L1->next;ElemType e;while(a != NULL)  //取L1表中的每一个节点{b = L2->next;  while(b != NULL)   //取L2表中的每一个节点{e.coe = a->data.coe * b->data.coe;    //系数相乘e.index = a->data.index + b->data.index;   //指数相加,得到节点相乘的值 InsertList(L3,e);  //再将该节点插入到L3中b = b->next;}a = a->next;}}
int main()
{LinkList *L1;//初始化第一个多项式InitList(L1);LinkList *L2;//初始化第2个多项式InitList(L2);int a=0;ElemType F;//初始化一个单项式用于每次的接收while(a++<2){int i=0;do//{	cout<<"请输入第"<<a<<"个多项式的"<<i+1<<"项的系数:(按0视为该多项式结束项)";  cin>>F.coe;//先输入系数cout<<"请输入第"<<a<<"个多项式的"<<i+1<<"项的指数:";  cin>>F.index;//再输入指数i++; cout<<endl;if(F.coe!=0&&a==1)//coe为0直接忽略InsertList(L1,F);else if(F.coe!=0&&a==2)InsertList(L2,F);}while(F.coe!=0);}cout<<"第一个多项式F(X)=:     ";  DispList(L1);cout<<"第二个多项式G(X)=:     ";  DispList(L2);LinkList *L3;  InitList(L3);cout<<"多项式相乘为:     ";multiply(L1,L2,L3); DispList(L3);cout<<"多项式相加为:     ";AddList(L1,L2);DispList(L1);//其实也可以一个一个加return 0;
}//浅浅的分析一下
//第一二个多项式需要不断输入各系数,而且由指数由小到大打印
//ps1:直到找到比自己大的停下,此时的位置即为自己的位置如果遇到相等也会停下
//ps2:打印的思路特判一下思路
//打印系数
//index=0,coe=1的情况,直接打印系数
//系数为1的情况,不打印1
//
//第三是加号的特判+

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

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

相关文章

理解这些道理相当于在人生的航程上装备了一双智慧的翅膀

1. 走自己的路&#xff0c;因为只有你才能决定自己的命运。 2. 养育者亦会受反哺&#xff0c;掌灯人终会被照亮。 3. 如果心情不好&#xff0c;建议玩ARPG手机游戏[降龙猎手]放松自己&#xff0c;TapTap上就可以下载&#xff0c;不要 让不好的情绪一直持续下去&#xff0c;尽快…

最新优质电商API接口,附带教程【多语言环境高并发】

给大家更新一波24年一月份的新接口吧。 01 接口信息 线路推荐: 多仓&#xff1a; 1.春盈&#xff1a; https://wds.ecsxs.com/230989.json 2.无意&#xff1a; http://www.wya6.cn/tv/yc.json 3.主流电商平台API数据采集 单仓&#xff1a; 1.饭太硬&#xff1a; http:/…

如何在 Ubuntu 18.04 上为 Nginx 创建自签名 SSL 证书

简介 TLS&#xff0c;即传输层安全性&#xff0c;及其前身 SSL&#xff0c;即安全套接字层&#xff0c;是用于将普通流量包装在受保护的加密包装中的网络协议。 使用这项技术&#xff0c;服务器可以在服务器和客户端之间安全地发送流量&#xff0c;而不会被外部方拦截。证书系…

探无止境,云游未来 | “游戏出海云”发布

4月28日下午&#xff0c;2024中国移动算力网络大会之“游戏出海”分论坛在江苏省苏州金鸡湖国际会议中心圆满落幕。 此次论坛由中国移动海南公司主办&#xff0c;中国移动通信集团政企事业部、中国移动云能力中心、中国移动国际公司共同协办。海南省工业与信息化厅副厅长黄业晶…

爬虫学习(1)简易网页采集器

如何使用: (reques ts模块的编码流程) 指定url 发起请求 获取响应数据 持久化存储 import requests#UA:User-Agent (请求载体的身份标识) #UA伪装&#xff1a;门户网站的服务器会检查对应请求的载体身份标识 if __name__ "__main__":urlhttps://www.baidu.com/s#处理…

ESP8266做主机 手机网络助手为从机

ATCIFSR查看地址&#xff0c;一般ESP8266 为192.168.4.1 在手机上下载网络调试助手&#xff0c;打开TCP客户端 创建后192.168.4.1 端口8089然后连接ESP8266热点。 ESP向手机发数据前先发送要发几个数据ATCIPSEND0,8表示发8个&#xff0c;然后再发8个数 上面创建好热点后&…

GB/T 29061-2012 建筑玻璃用功能膜检测

建筑用玻璃功能膜是指一种由耐磨涂层、经工艺处理的聚酯膜和保护膜通过胶黏剂组合在一起的多层聚酯复合薄膜材料。 GB/T 29061-2012建筑玻璃用功能膜测试项目&#xff1a; 测试项目 测试方法 外观质量 GB/T 29061 尺寸偏差 GB/T 29061 光学性能 GB/T 29061 颜色均匀性…

(Arxiv,2024)Mind the Modality Gap:通过跨模态对齐建立遥感视觉语言模型

文章目录 相关资料摘要引言相关工作对比语言图像预训练遥感域专用 CLIP 模型遥感中的多模态 CLIP 启发模型 方法模型算法输入阶段&#xff1a;输出阶段&#xff1a;步骤说明&#xff1a; 第一阶段&#xff1a;通过权重插值修补CLIP将遥感图像模态与自然图像和文本对齐 实验 相关…

基于PSO优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PSO优化的PV光伏发电系统simulink建模与仿真。其中PSO采用matlab编程实现&#xff0c;通过simulink的函数嵌入模块&#xff0c;将matlab调用进simulink中。 2.系统仿真结…

java-Spring-Lombok-讲解-(一文一言)创伤是成熟的途径

高手都在孤独前进-致敬我们不悔的青春 我打算每篇文章下找一下文言警句-说不那天会用上&#x1f601;&#x1f601;&#x1f601;&#x1f601; 每篇一言 创伤是成熟的途径 希望经历过创伤的人,能更好享受当下, 爱自己胜过爱别人呀 目录 &#x1f3bb;Lombok简介 &#…

如何在 Ubuntu 16.04 上为 Nginx 创建自签名 SSL 证书

简介 TLS&#xff0c;即传输层安全协议&#xff0c;及其前身SSL&#xff0c;即安全套接字层&#xff0c;是用于将普通流量包装在受保护的加密包装中的网络协议。 使用这项技术&#xff0c;服务器可以在服务器和客户端之间安全地发送流量&#xff0c;而不会被外部方拦截。证书…

5.协议的编解码

本章内容其实没有多大难度&#xff0c;主要考察大家的细心程度.计算数据长度然后截取相应字节数组并按照协议进行解码&#xff0c;编码则反之。 1.基础消息的编解码 Override public BasicMessage decode(byte[] bytes) {int dataLength ByteUtil.bytesToInt(ByteUtil.extra…

embedding介绍和常用三家模型对比

Embedding(嵌入)是一种在计算机科学中常用的技术,尤其是在自然语言处理(NLP)领域。在NLP中,embedding通常指的是将文本中的单词、短语或句子转换为固定维度的向量(vector)。这些向量代表了文本中的语义和上下文信息。 1.embedding 介绍 1.1 为什么需要Embedding? 在…

MongoDB聚合运算符:$toInt

MongoDB聚合运算符&#xff1a;$toInt 文章目录 MongoDB聚合运算符&#xff1a;$toInt语法使用举例 $toInt聚合运算符将指定的值转换为整数类型。如果指定的值为空或缺失&#xff0c;则返回null&#xff1b;如果值无法被转换为整数&#xff0c;则报错。 语法 {$toInt: <exp…

sqlalchemy 分表实现方案

1.需求及场景概述 现有系统中因历史数据量过大&#xff0c;产生了将历史数据进行按月存储的要求&#xff0c;系统和数据库交互使用的是sqlalchemy&#xff0c;假设系统的原来的历史记录表&#xff08;record&#xff09;如下&#xff1a; 为了将历史数据按月分表存储&#xff0…

蓝桥杯国赛练习题真题Java(矩阵计数)

题目描述 一个 NM 的方格矩阵&#xff0c;每一个方格中包含一个字符 O 或者字符 X。 要求矩阵中不存在连续一行 3 个 X 或者连续一列 3 个 X。 问这样的矩阵一共有多少种&#xff1f; 输入描述 输入一行包含两个整数 N,M (1≤N,M≤5)。 输出描述 输出一个整数代表答案。…

C语言的34个运算符

算术运算符&#xff1a; 加法运算符&#xff08;&#xff09;&#xff1a;对两个操作数进行相加。减法运算符&#xff08;-&#xff09;&#xff1a;从第一个操作数中减去第二个操作数。乘法运算符&#xff08;*&#xff09;&#xff1a;将两个操作数相乘。除法运算符&#xff…

5.12 mybatis之typeAliases别名详解

文章目录 1. 通过typeAlias为每个类指定别名2. 通过package为整个包下的类指定别名 在mapper中为SQL定义POJO返回类型时&#xff0c;要指定POJO的全限定名&#xff0c;如果SQL众多&#xff0c;要为每个SQL书写返回类型的全限定名&#xff0c;比较繁琐&#xff0c;此时可以用typ…

Study--Oracle-01-单实例部署Oracle11G-R2

Oracle版本发布介绍 Oracle 19c和12c和11g功能区别_数据库_oracle_支持 一、CentOS 7 环境准备 1、软件准备 操作系统&#xff1a;CentOS 7 数据库版本: Oracle11g R2 2、操作系统环境配置 关闭selinux &#xff0c;编辑 /etc/selinux/config文件&#xff0c;设置SELINU…

在Ubuntu上搭建并通过systemctl管理Minecraft基岩版服务器

在Ubuntu系统上运行并管理Minecraft基岩版服务器可以通过systemctl实现更高效的服务管理。本文将全面介绍如何从搭建服务器开始到使用systemctl进行管理的整个过程。 第一部分&#xff1a;搭建Minecraft基岩版服务器 1. 下载服务器软件 首先&#xff0c;访问 Minecraft官网 …