中国海洋大学-数据结构-蒋若冰-第二次实验-一元多项式乘法

实验名称

一元多项式乘法

姓名

学号

日期

2024年3月15日

实验内容

设计实现一个稀疏多项式计算器

实验要求:

  1. (3分)用C或C++语言编程实现“带头节点的线性链表”数据结构及基本操作,例如创建,定位,查找,遍历,插入,删除,归并,销毁等。
  2. (2分)设计输入输出格式,实现一元多项式的输入、存储、输出。用编程实现的LinkList进行多项式链表的创建、数值输入、输出等功能。默认多项式序列按指数降序或升序排列。
  3. (2分)实现两个多项式相加并输出结果。
  4. (3分)实现两个多项式相乘并输出结果。

实验目的

学习线性表

实验步骤

  1. (3分)用C或C++语言编程实现“带头节点的线性链表”数据结构及基本操作,例如创建,定位,查找,遍历,插入,删除,归并,销毁等。
  1. 先设置线性链表,同时再设置头结点、长度、目前的指针等变量来记录其他数据,使链表更健壮(数据类型用int表示)
  1. 实现创建,定位,查找,遍历,插入,删除,归并,销毁等函数,因这些函数难度较低,每个函数只简单说明关键点。

创建:<1>无法成功创建时需进行一定的报错提醒并退出程序

<2>起始情况需考虑head->next和current均指向NULL。

定位:找到与data数据相同的节点,返回该节点指针同时更改current

实验步骤

遍历:只需要输出数和数的长度即可。

插入:<1>注意可能的报错

<2>用定位找到目标节点,考虑头结点和尾节点情况及时改变指针,添加完之后进行长度的增加。

删除:<1>注意清空内存

<2>注意改变长度

归并:<1>循环用来先将其中一部分的数来放到c中

<2>再查看哪个链表还剩下数据没有连完,连上即可。

  1. (2分)设计输入输出格式,实现一元多项式的输入、存储、输出。用编程实现的LinkList进行多项式链表的创建、数值输入、输出等功能。默认多项式序列按指数降序或升序排列。

<1>创建链表,同时每个链表储存两个数据。

<2>输入格式为先输入多项式项数,再按指数从大到小顺序输入系数和指数,同时注意指针指向NULL。

3.(2分)实现两个多项式相加并输出结果。

先实现链表中插入数据:

<1>需要考虑指数相同情况,直接进行系数加减即可,同时如果加完后系数为0进行清除

<2>再实现按顺序将该数加入到多项式中

<3>最后该数可能添加到最后

再实现添加就只需进行多个数据的插入即可。

4.实现两个多项式相乘并输出结果。

进行两个循环,第一层循环对第二个多项式每个数进行遍历,第二层循环对第一个多项式中每个数进行遍历,这样得到两个多项式中每个数相乘的结果,通过添加添加到新的链表即可完成相乘。

实验结果:

实验总结

本次实验我的收获有三点。首先是知识的学习,通过本次实验巩固了理论课线性表的知识,尤其深化理解了“带头节点的线性链表”概念,也对线性链表的结构模式有了进一步的了解。其次,本次实验强化了我的代码能力,通过一元多项式的案例,让线性链表的知识变成了我代码的经验,我学会了线性链表这一数据结构类型,同时也得到了相应代码能力的提升。最后,在本次实验,我也体会到了思路的重要性,思考需要全面,例如在实现乘法的过程中,起初认为乘法可能会毁坏原本的多项式,因此设置了一个复制多项式的函数,但事实上只需要创造出一个新的多项式链表即可,导致最后反而画蛇添足了。从而,意识到了思考的全面性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值