ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:575.25KB ,
资源ID:24607130      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24607130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南邮数据结构实验一.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南邮数据结构实验一.docx

1、南邮数据结构实验一实 验 报 告( 2016 / 2017 学年 第 一 学期)课程名称数据结构 A实验名称线性表的基本运算及多项式的算术运算实验时间2017年 3 月 22 日指导单位计算机学院 计算机科学与技术系指导教师 邹志强学生姓名吴爱天班级学号 B15040916学院(系)计算机学院专 业 信息安全实 验 报 告实验名称线性表的基本运算及多项式的算术运算指导教师邹志强实验类型 验证实验学时 2+2实验时间一、 实验目的和要求(1) 深入理解线性表数据结构, 掌握线性表的顺序和链接两种存储表示方法.(2) 熟练掌握顺序表的各种基本操作(3) 学会使用顺序表解决应用问题的方法 (4)加深

2、对抽象模板类, 类的继承, 代码重用, 重载等 C+ 语言机制的理解和使用.二、实验环境(实验设备) (1) 硬件 :MAC( 2 ) 操作系统 : macOS( 3 ) Xcode三、实验原理及内容(1) 线性表操作1 在顺序表类 SeqList 中增加成员函数 void Reverse(), 实现顺序表的逆转.2 在顺序表类 SeqList 中增加成员函数 bool DeleteX (const T &x), 删除表中所有元素值等于 x 的元素.若表中存在这样的元素, 则删除之, 且函数返回 true, 否则函数返回false.3 编写 main 函数, 调用上述新增函数.(2) 一元多项

3、式的相加和相乘1 设计带表头结点的单链表表示的多项式类, 在该类上定义和实现教材2.4节中程序2.7的多项式类上的各个运算.2 在该类上增加成员函数 void PolyMul(Polynominal& r), 并重载 * 运算符.3 实现菜单驱动的 main 函数, 测试多项式类上的各个运算, 输入多项式, 显示多项式, 多项式加法和乘法运算. 一、线性表操作1、在顺序表类 SeqList 中增加成员函数 void Reverse(), 实现顺序表的逆转. 三个主要类为LinearList 、 SeqList 、SingleList,继承关系如下实 验 报 告 顺序表逆转 templatevo

4、id SeqList:Reverse() T *elementsTemp ; elementsTemp = new T n; int nCopy = n ; int j=0; while (nCopy0) elementsTempj=elementsnCopy-1; nCopy-; j+; for (int i=0 ; ilink = theList;Polynominal:Polynominal() Term *p = theList-link; while (p!=theList) theList-link = p-link; delete p; p=theList-link; delet

5、e theList;void Polynominal:AddTerm(istream &in) Term *p=theList; int c,e; while (1) coutplease input the coef and exp:endl; coutc; coute; if (eInsertAfter(c, e); void Polynominal:Output(ostream &out)const int first = 1; Term *p = theList-link; coutthe polynominal is :link) if(!first & (p-coef0) out+

6、; /!first =0 表示 非第一项 first = 0; out*p; /调用重载 coutnlink; tp=istLoc-link; while (rp-coef0) if (tp-coef rp-coef) istLoc=tp; tp=tp-link; continue; if (tp-coef = rp-coef) tp-coef = tp-coef + rp-coef; if (tp-coef = 0) istLoc-link = tp-link; delete tp; tp=istLoc-link; else istLoc=tp; tp=tp-link; else istLo

7、c=istLoc-InsertAfter(rp-coef, rp-exp); rp=rp-link; 2、 在该类上增加成员函数 void PolyMul(Polynominal& r), 并重载 * 运算符.PolyMul():注释:主要的思路为,新建一个多项式对象Temp,将两两相乘的所得的项存入Temp中值得注意的是,每次q多项式每项扫描完毕后,都需要q指针重新归为到它的起点,然后进入p多项式下一个项的相乘周期,复杂度为O(n2)级别。3、 实现菜单驱动的 main 函数, 测试多项式类上的各个运算, 输入多项式, 显示多项式, 多项式加法和乘法运算.Main(): 测试样例加入多项式、

8、多项式相加、多项式相乘实 验 报 告如图,分别检测6X6+3X5+4X2与2X2+3X相加和相乘运算,得到6X6+3X5+4X2+2X2+3X+2X2+3X和 12X8+18X7+6X7+9X6+8X4+12X3,符合预期。实 验 报 告四、实验小结(包括总结上机调试过程中所遇到的问题和解决方法、感想与建议等)1、这是我第一次编写这种规模的c+程序,而且加入了图形化菜单,中间突破了很多困难,让我对于c+语法和应用都上了一个台阶。2、这个程序中的指针操作很多,很多时候一不小心内存就会泄露和报错,debug的时候需要一步步跟踪去查找,费时费力,但是我耐下了心一步步去调试,对于三种新建对象方法的不同之处也有了很深的认识。3、有些函数中对于边界的判断和逻辑思维的严谨有较高的要求,很多时候找不出出错在哪儿,便会去询问高手,从高手处学到了很多,对于逻辑思维和严谨性的训练,我要用过更多的算法来锻炼。4、一步步耐心写下这好几百行的代码,觉得比较满足和欣慰。五、指导教师评语成 绩批阅人日 期

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1