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