【数据结构】宜宾大学-计院-实验三

线性表的应用——实现两多项式的相加

  • 课前准备:
  • 实验学时:2
    • 实验目的:
    • 实验内容:
    • 实验结果:
    • 实验报告:(及时撰写实验报告)
      • 实验测试结果:
      • 代码实现:(C/C++)【含注释】

课前准备:

大家跟着我一起读,少壮不努力,没钱打游戏…

———龟虽寿
——东汉末年·曹操
神龟虽寿,犹有竟时;
腾蛇乘雾,终为土灰。
老骥伏枥,志在千里;
烈士暮年,壮心不已。
盈缩之期,不但在天;
养怡之福,可得永年。
幸甚至哉,歌以咏志。

人物简介:曹操(155年-220年正月庚子),字孟德,一名吉利,小字阿瞒,沛国谯(今安徽亳州)人,是东汉末年杰出的政治家、军事家、文学家、书法家。‌ 他也是曹魏政权的奠基者,其子曹丕称帝后,追尊他为武皇帝,庙号太祖‌。
在这里插入图片描述
注释:
1 龟虽寿: 曹操所作乐府组《步出夏门行》中的第四章。
2 神龟: 传说中的通灵之龟,能活几千岁。寿,长寿。
3 竟: 终结,这里指死亡。
4 腾蛇: 传说中龙的一种,能乘云雾升天。
5 骥: 良马,千里马。伏:趴,卧。枥:马槽。
6 烈士: 操有远大抱负的男子。这里专指为革命事业献身的人。暮年:晚年。

译文:

  1. 神龟虽寿,犹有竟时;腾蛇乘雾,终为土灰。
    译:
    神龟虽然十分长寿,但生命终究会有结束的一天;腾蛇尽管能腾云乘雾飞行,但终究也会死亡化为土灰。
  2. 老骥伏枥,志在千里;烈士暮年,壮心不已。
    译:
    年老的千里马虽然伏在马槽旁,雄心壮志仍是驰骋千里;壮志凌云的人士即便到了晚年,奋发思进的心也永不止息。
  3. 盈缩之期,不但在天;养怡之福,可得永年。
    译:
    人寿命长短,不只是由上天决定;调养好身心,就定可以益寿延年。
  4. 幸甚至哉,歌以咏志
    译:
    真是幸运极了,用歌唱来表达自己的思想感情吧。

神龟:传说可以活几千岁…
在这里插入图片描述

实验学时:2

实验目的:

1.掌握线性表的链式存储结构
2.能实现链表的基本操作,包括链表的建立、释放、查找、求长度、查找后继、插入、删除、输出等函数

实验内容:

在这里插入图片描述

实验结果:

每个同学都要记录实验结果(无论对与错),如果程序调试中有什么错误,记录并分析原因,必须另寻时间调试成功。

实验报告:(及时撰写实验报告)

实验测试结果:

在这里插入图片描述

代码实现:(C/C++)【含注释】

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using std::cout;
using std::cin;
using std::endl;//多项式项的两特征
typedef struct
{float coef;//系数int index;//指数
}polydata;//单链表节点
typedef struct SLNode
{polydata data;//自定义类型(多项式的项)struct SLNode* next;
}SLNode, * SLNodePtr;//比较项的指数来达到合并同类型的目的
int cmp(polydata pa, polydata pb)
{if (pa.index > pb.index)return 1;else if (pa.index < pb.index)return -1;elsereturn 0;
}//创建一个多项式,n为多项式的项数
void GreatSLNode(SLNodePtr& polyhead, int n)
{//动态开辟头节点polyhead = (SLNodePtr)malloc(sizeof(SLNode));if (polyhead == NULL) return;polyhead->next = NULL;SLNodePtr rear = polyhead;//尾指针指向头节点polydata tmp;//创建项数为n的多项式for (int i = 1; i <= n; i++){SLNodePtr p = (SLNodePtr)malloc(sizeof(SLNode));if (p == NULL) return;printf("分别输入该多项式第 %d 项的系数与指数\n", i);//scanf_s("%f%d", &tmp.coef, &tmp.index);cin >> tmp.coef >> tmp.index;p->data.coef = tmp.coef;p->data.index = tmp.index;//更新尾节点并记得给尾的next赋NULLrear->next = p;rear = p;rear->next = NULL;}rear->next = NULL;//给尾的next赋NULL
}//两多项式相加并合并同类项
SLNodePtr AddPoly(SLNodePtr pahead, SLNodePtr pbhead)
{//动态开辟头节点并创建尾节点指向头节点SLNodePtr newhead = (SLNodePtr)malloc(sizeof(SLNode));if (newhead == NULL) return NULL;SLNodePtr newrear = newhead;//分别找到两多项式的第一项数据即第一个有效节点SLNodePtr pa = pahead->next;SLNodePtr pb = pbhead->next;SLNodePtr newnode;//创建新节点待用float sum;//相同指数的项系数相加while (pa && pb){switch (cmp(pa->data, pb->data)){case 1://指数不相等项newnode = (SLNodePtr)malloc(sizeof(SLNode));if (newnode == NULL) return NULL;newnode->data.coef = pa->data.coef;newnode->data.index = pa->data.index;//尾插并更新尾newrear->next = newnode;newrear = newnode;pa = pa->next;break;case -1://指数不相等项newnode = (SLNodePtr)malloc(sizeof(SLNode));if (newnode == NULL) return NULL;newnode->data.coef = pb->data.coef;newnode->data.index = pb->data.index;//尾插并更新尾newrear->next = newnode;newrear = newnode;pb = pb->next;break;case 0://指数相等项sum = pa->data.coef + pb->data.coef;if (sum != 0){newnode = (SLNodePtr)malloc(sizeof(SLNode));if (newnode == NULL) return NULL;newnode->data.coef = sum;newnode->data.index = pa->data.index;//尾插并更新尾newrear->next = newnode;newrear = newnode;}pa = pa->next;pb = pb->next;break;}}//将剩余项接在最后if (pa)newrear->next = pa;if (pb)newrear->next = pb;return newhead;
}//打印
void Print(SLNodePtr polynewhead)
{SLNodePtr tmp1 = polynewhead->next;//第一个有效节点while (tmp1){printf("%.2fx^%d", tmp1->data.coef, tmp1->data.index);cout << " + ";tmp1 = tmp1->next;}
}
int main()
{//创建两个节点指针SLNodePtr polyhead1;SLNodePtr polyhead2;cout << "前提条件:输入多项式的“指数大小”随着“项数”的“增多而减小”,否则无法完全合并同类项" << endl;cout << "请输入第一个多项式" << endl;GreatSLNode(polyhead1, 3);cout << endl;cout << "请输入第二个多项式" << endl;GreatSLNode(polyhead2, 2);SLNodePtr newhead = AddPoly(polyhead1, polyhead2);cout << "输出两多项式相加后的各项系数与指数" << endl;Print(newhead);return 0;
}
1+1=2
2+2=4

传送门:

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

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

相关文章

ECharts 实现气象数据可视化的教程

ECharts 是一个由百度开源的强大的数据可视化库&#xff0c;它能够通过简单的配置和灵活的扩展生成交互式图表。对于气象数据的可视化&#xff0c;ECharts 提供了丰富的图表类型&#xff0c;如热力图、雷达图、折线图、风场图等&#xff0c;适用于展示温度、降雨量、风速、风向…

安宝特方案 | AR技术在轨交行业的应用优势

随着轨道交通行业不断向智能化和数字化转型&#xff0c;传统巡检方式的局限性日益凸显。而安宝特AR眼镜以其独特的佩戴方式和轻便设计&#xff0c;为轨道交通巡检领域注入了创新活力&#xff0c;提供了全新的解决方案。 01 多样化佩戴方法&#xff0c;完美适应户外环境 安宝特…

访问控制列表(课内实验)

实验2&#xff1a;访问控制列表 实验目的及要求&#xff1a; 通过实验&#xff0c;进一步的理解标准ACL与扩展ACL的工作原理及执行过程。理解通配符的概念&#xff0c;熟练掌握标准ACL与扩展ACL的配置指令&#xff0c;掌握将访问控制列表应用VTY线路上&#xff0c;并且能够判断…

鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)

当运行时的状态变量变化&#xff0c;UI重新渲染&#xff0c;在ArkUI中称为状态管理机制&#xff0c;前提是变量必须被装饰器修饰。不是状态变量的所有更改都会引起刷新&#xff0c;只有可以被框架观测到的更改才会引起UI刷新。其中boolen、string、number类型&#xff0c;可观察…

Oracle漏洞修复 19.3 补丁包 升级为19.22

1.场景描述 上周末2024-10-12日,服务器扫出漏洞,希望及时修复。其中,oracle的漏洞清单如下,总结了下,基本都是 Oracle Database Server 的 19.3 版本到 19.20 版本和 21.3 版本到 21.11 版本存在安全漏洞,即版本问题。如: Oracle Database Server 安全漏洞(CVE-2023-22…

遭遇勒索攻击?瑞数信息的“反勒索黑科技”了解一下

2024年&#xff0c;勒索病毒肆掠&#xff0c;尤其是在AI技术不断发展的背景下&#xff0c;勒索攻击也在不断升级。相关报道指出&#xff0c;2024年来自勒索软件的威胁更加严重&#xff0c;泄露事件和泄露网站的增加也侧面表明勒索软件的成功率正在不断提升。 近期&#xff0c;…

Spring AI Java程序员的AI之Spring AI(一)

SpringAI 基础使用 前言Spring AIChatClientImageClientOpenAiAudioTranscriptionClientEmbeddingClient 总结 前言 Spring AI&#xff0c;听着名字就感觉很好使用&#xff0c;快速上手&#xff0c;虽然功能没有太完善&#xff0c;但是社区活跃度很高&#xff0c;可以看看源码…

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统&#xff0c;具有自己的特点&#xff0c;主要有两个方面&#xff1a; 1. 系统规模大&#xff0c;目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现&#xff0c;大部分页面具有类似的功能&…

Docker新手必看:快速安装和配置BookStack在线文档系统

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动BookStack容器4. 登录与简单使用5. 公网远程访问本地BookStack5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 前言 本文主要介绍如何在Linux系统使用Docker本地部署在线文档管理…

SQL自学:怎么创建视图

在 SQL 中&#xff0c;视图是一种虚拟表&#xff0c;它是基于一个或多个表的查询结果集。视图并不实际存储数据&#xff0c;而是在每次查询时动态生成结果。 一、创建视图的语法&#xff08;以 MySQL 为例&#xff09; CREATE VIEW view_name AS SELECT column1, column2,...…

leetcode哈希表(二)-两个数组的交集

题目 . - 力扣&#xff08;LeetCode&#xff09; 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[…

【c++篇】:初识c++--编程新手的快速入门之道(二)

文章目录 前言一.引用1.引用的概念2.引用的特性3.引用的使用场景4.常引用5.引用和指针的区别 二.内联函数1.C语言的宏函数2.内联函数的概念3.内联函数的特性 三.auto关键字1.auto的定义2.auto的使用规则3.auto不能推导的场景 四.基于范围的for循环1.范围for的语法2.范围for的使…

时间序列预测(七)——梯度消失(Vanishing Gradient)与梯度爆炸(Exploding Gradient)

目录 一、定义 二、产生原因 三、解决方法&#xff1a; 梯度消失与梯度爆炸是深度学习中常见的训练问题&#xff0c;它们主要发生在神经网络的反向传播过程中&#xff0c;使得模型难以有效学习。 一、定义 1、梯度消失&#xff08;Vanishing Gradient&#xff09;&#xf…

跟着导师学东西,学什么怎么学

获得老师帮助&#xff1a; 自己能有一些见解&#xff0c;让老师明白你是需要帮助的。 尽量让老师的帮助有正反馈。 增强自己表现力&#xff0c;多刷存在感&#xff08;要和自己能力尽量适配&#xff09; 不要羞于求助&#xff0c;内心戏不要太多&#xff0c;要多表达&#xff0…

PCL 点云配准-改进的RANSAC算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 计算FPFH特征 2.1.2 RANSAC配准 2.1.3 可视化点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff0…

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件&#xff0c;用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库&#xff08;如MySQL、PostgreSQL、Oracle、MongoDB…

【图论】(一)图论理论基础与岛屿问题

图论理论基础与岛屿问题 图论理论基础深度搜索&#xff08;dfs&#xff09;广度搜索&#xff08;bfs&#xff09;岛屿问题概述 岛屿数量岛屿数量-深搜版岛屿数量-广搜版 岛屿的最大面积孤岛的总面积沉没孤岛建造最大人工岛水流问题岛屿的周长 图论理论基础 这里仅对图论相关核…

java学习--集合(大写五.5)

5.collection子接口&#xff1a;Set 5.1Set及其实现类特点 java.util.Collection:存储一个一个的数据 子接口&#xff1a;Set:存储无序的、不可重复的数据(高中学习的集合) 1&#xff09;HashsSet主要实现类 底层使用的是HashMap&#xff0c;即使用数组单向链表红黑树结构进行…

netron安装(windows linux)

目录 netron简介 不同操作系统的安装方式 linux windows mac系统 netron简介 netron可视化工具&#xff0c;是一个可以清晰的看到神经网络模型的每一层的输入输出&#xff0c;网络总体的架构&#xff0c;而且支持各种不同网络框架&#xff0c;简单好用。 效果如下所示 不…

028 elasticsearch索引管理-ElasticsearchRestTemplate

文章目录 pom.xmlapplication.ymlCubemallSearchApplication.javaRestClientTest.java使用ElasticsearchRestTemplate对象Blog.javaRestTemplateTest.java pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…