南邮数据结构实验一

上传人:飞*** 文档编号:43533628 上传时间:2018-06-06 格式:DOC 页数:14 大小:276.50KB
返回 下载 相关 举报
南邮数据结构实验一_第1页
第1页 / 共14页
南邮数据结构实验一_第2页
第2页 / 共14页
南邮数据结构实验一_第3页
第3页 / 共14页
南邮数据结构实验一_第4页
第4页 / 共14页
南邮数据结构实验一_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《南邮数据结构实验一》由会员分享,可在线阅读,更多相关《南邮数据结构实验一(14页珍藏版)》请在金锄头文库上搜索。

1、实实 验验 报报 告告(2014 / 2015 学年学年 第第 二二 学期)学期)课程名称数据结构实验名称线性表的基本运算及多项式的算术运算实验时间2015年9月28日指导单位计算机科学与技术系指导教师黄海平学生姓名陈明阳班级学号Q14010119学院(系)贝尔英才专 业信息科技强化班1实实 验验 报报 告告实验名称实验名称线性表的基本运算及多项式的算术运算指导教师指导教师黄海平实验类型实验类型验证验证实验学时实验学时4实验时间实验时间9.28一、一、 实验目的和要求实验目的和要求内容:实现顺序表和单链表的基本运算,多项式的加法和乘法算术运算。 要求:能够正确演示线性表的查找、插入、删除运算。

2、实现多项式的加法和乘法运算操作。二、实验环境实验环境(实验设备实验设备)VSUAL STUDIO20152三、实验原理及内容三、实验原理及内容LinearlistseqlistLA,LB函数调用数据类型如下图源码:Linearlist.h:#includeusing namespace std;template class LinearListpublic:virtual bool IsEmpty() const = 0;virtual int Length() const = 0;virtual bool Find(int i, Tvirtual int Search(T x) const

3、= 0;virtual bool Insert(int i, T x) = 0;virtual bool Delete(int i) = 0;virtual bool Update(int i, T x) = 0;virtual void Output(ostreamprotected:int n;Seqlist.h:#include“linearlist.h“template3class SeqList :public LinearListpublic:SeqList(int mSize);SeqList() delete elements; bool IsEmpty() const;int

4、 Length() const;bool Find(int i, Tint Search(T x) const;bool Insert(int i, T x);bool Delete(int i);bool Update(int i, T x);void Output(ostreamprivate:int maxLength;T *elements;templateSeqList:SeqList(int mSize)maxLength = mSize;elements = new TmaxLength;n = 0;templatebool SeqList:IsEmpty() constretu

5、rn n = 0;templateint SeqList:Length()constreturn n;templatebool SeqList:Find(int i, T j bool SeqList:Insert(int i, T x)if (in - 1)cout i; j-)elementsj + 1 = elementsj;elementsi + 1 = x;n+;return true;templatebool SeqList:Delete(int i)if (in - 1)cout 5bool SeqList:Update(int i, T x)if (in - 1)cout vo

6、id SeqList:Output(ostream i LA(SIZE);int i = 0;for (i = 0; iusing namespace std;class Termpublic:Term(int c, int e);Term(int c, int e, Term* nxt);Term* InsertAfter(int c, int e);private:int coef;int exp;Term* link;friend ostreamfriend Polynominalfriend Polynominal;Polynominal:Polynominal()theList =

7、new Term(0, -1); /头结点theList-link = NULL; /单链表尾结点指针域为空Polynominal:Polynominal()Term* p = theList-link;while (p != NULL)theList-link = p-link;delete p;p = theList-link;9delete theList;void Polynominal:AddTerms(istream int c, e;for (;)cout c e;q = q-InsertAfter(c, e);if (0 = e) break;void Polynominal:

8、Output(ostreamTerm *p = theList-link;for (; p != NULL p = p-link)if (!first /p指向第一个要处理的结点q = q1-link; /q1是q的前驱,p和q就指向两个当前进行比较的项while (p != NULL q = q-link;if (p-exp = q-exp) /当指数相等时,系数相加q-coef = q-coef + p-coef;10if (q-coef = 0) /若相加后系数为0,则删除qq1-link = q-link;delete(q);q = q1-link; /重置q指针elseq1 = q;

9、 /若相加后系数不为0,则移动q1和qq = q-link;else /pexpq-exp的情况q1 = q1-InsertAfter(p-coef, p-exp); /以p的系数和指数生成新结点,插入q1后p = p-link;void Polynominal:PolyMul(Polynominal /定义相乘后的数据Term *n = result.theList; /n指向result的头结点n = n-InsertAfter(0, 0); /在result的头结点后插入新结点,系数指数均为0Term *p = r.theList-link; /p指向第一个要处理的结点while(p-e

10、xp = 0) /对r的单循环链表遍历Polynominal tmp; /存储某段相乘后的数据Term *m = tmp.theList; /m指向tmp的头结点Term *q = theList-link; /q指向表头结点的后继结点while(q-exp = 0) /对当前对象的单循环环链表遍历m = m-InsertAfter(p-coef)*(q-coef), (p-exp) + (q-exp); /生成新结点插入n后q = q-link; result.PolyAdd(tmp); /将temp加到result上p = p-link; Term *q = theList-link; /

11、q指向表头结点的后继结点while(q != NULL) /删除原对象的所有数据theList-link = q-link;delete q;q = theList-link;11q = theList;q = q-InsertAfter(0, 0);PolyAdd(result); /将result加到当前对象上ostream return in;Polynominal return a;Polynominal return a;int main()int choose;cout choose;Polynominal p, q;switch (choose)case 1:cin p; cou

12、t q; cout p; cout q; cout q;q = q * p;break;cout q;return 0;实现多项式相加或相乘运行截图:实实 验验 报报 告告13四、实验小结四、实验小结(包括问题和解决方法、心得体会、意见与建议等)这两个实验的重难点都在于正确灵活使用,大部分代码在书上都有提供,真正的操作重点在于理解这些代码的意义和使用方法。第二个实验用到了运算符的重载,对于编程能力有不少挑战。目前第二个代码仍然有几个问题,比如不能加法乘法混用,计算后第一个多项式的内容会被覆盖等,下一步改进方向是实现加法乘法混用,并且将结果传递给第三变量,增加代码实用性。五、指导教师评语五、指导教师评语成成 绩绩批阅人批阅人日日 期期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号