哈尔滨工业大学数据结构实验:链式多项式运算

需积分: 0 0 下载量 191 浏览量 更新于2024-06-30 收藏 332KB DOCX 举报
本篇实验报告是哈尔滨工业大学计算机科学与技术学院学生熊健羽在2018年11月7日完成的数据结构与算法课程中的实验12,主题是线性表的链式存储结构与多项式运算的应用。课程为必修课程,实验目的是让学生深入理解并掌握线性表的链式存储结构以及其基本操作,如创建、插入、删除等,同时学习如何将多项式表示为链表,并实现多项式的代数运算。 实验内容主要包括以下部分: 1. 实验环境:使用的是Intel Core i5-7200U处理器,配备Intel HD Graphics 620和Nvidia GeForce 940MX显卡,有8GB物理内存和1TB硬盘+128GB SSD。操作系统是Microsoft Windows 10家庭中文版,编译环境为MinGW-W64,开发工具包括VScode和code::blocks。 2. 实验要求: - 实现多项式的一元多项式存储,支持用户输入按指数降幂排列的多项式,以及以文件形式进行输入和输出。 - 能计算多项式在给定浮点数x0处的值,并返回浮点结果。 - 实现多项式加法、减法、乘法和除法运算,注意优化算法以减少乘法和除法运算过程中的空间占用以及减少节点的分配与回收。 - 提示使用循环链表结构或空间表的思想来提高效率。 3. 数据结构设计:多项式表示为线性表,每个链表节点包含指数(double)和系数(int)。 4. 函数设计: - `void insert(double x, int y, pos p)`:用于在链表中插入新节点。 - `LIST makeNull(void)`:创建一个空链表。 - `void deletePoly(LIST head)`:释放整个多项式链表。 - `void readPoly(LIST head)`:从文件中读取多项式,通过`insert`、`fgets`和`sscanf`函数实现。 - `void printPoly()`:输出链表表示的多项式。 5. 设计思想:程序设计围绕数据结构的实现展开,主程序可能包括初始化链表、输入处理、运算实现、结果输出和清理等步骤。各个函数之间的调用关系清晰,体现了函数化编程原则。 通过这个实验,熊健羽不仅锻炼了链表操作技能,还提高了算法设计和优化的能力,特别是在处理大量多项式运算时,学会了如何有效地管理和利用内存。这种实验有助于培养学生的实践能力和问题解决能力,为未来从事IT工作打下坚实基础。