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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验报告二线性表的顺序存储.docx

1、数据结构实验报告二线性表的顺序存储实验报告二 线性表的顺序存储班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX *一、实验目的:(1)掌握顺序表的基本操作的实现方法。(2)应用顺序表的基本算法实现集合A=AUB算法。(3)应用顺序表的基本算法实现两有序顺序表的归并算法。二、实验内容:1、线性表顺序存储结构的基本操作算法实现(要求采用类模板实现)实现提示 (同时可参见教材p5822-p60页算法、ppt)函数、类名称等可自定义,部分变量请加上学号后3位。库函数载和常量定义:(代码)#includeusing namespace std;const int

2、MaxSize=100;(1)顺序表存储结构的定义(类的声明):(代码)template /定义模板类SeqListclass SeqListpublic: SeqList( ); /无参构造函数 SeqList(datatype a , int n); /有参构造函数 SeqList(); /析构函数为空 int Length(); /求线性表的长度 datatype Get(int i); /按位查找,取线性表的第i个元素 int Locate(datatype item); /查找元素item void Insert(int i, datatype item); /在第i个位置插入元素i

3、tem datatype Delete(int i); /删除线性表的第i个元素 void display(); /遍历线性表,按序号依次输出各元素private: datatype dataMaxSize; /存放数据元素的数组 int length; /线性表的长度;(2)初始化顺序表算法实现(不带参数的构造函数)/*输 入:无*前置条件:顺序表不存在*功 能:构建一个顺序表*输 出:无*后置条件:表长为0*/实现代码:template SeqList: SeqList( ) length=0;(3)顺序表的建立算法(带参数的构造函数)/*输 入:顺序表信息的数组形式a,顺序表长度n*前置

4、条件:顺序表不存在*功 能:将数组a中元素建为长度为n的顺序表*输 出:无*后置条件:构建一个顺序表*/实现代码:template SeqList: SeqList(datatype a, int n) if (nMaxSize) cout数组元素个数不合法endl; for (int i=0; in; i+) datai=ai; length=n;(4)在顺序表的第i个位置前插入元素e算法/*输 入:插入元素e,插入位置i*前置条件:顺序表存在,i要合法*功 能:将元素e插入到顺序表中位置i处*输 出:无*后置条件:顺序表插入新元素,表长加1*/实现代码:template void SeqL

5、ist:Insert(int i, datatype item) int j; if (length=MaxSize) cout溢出endl; if (ilength+1) couti不合法!=i; j-) dataj=dataj-1; datai-1=item; length+;(5)删除线性表中第i个元素算法/*输 入:要删除元素位置i*前置条件:顺序表存在,i要合法*功 能:删除顺序表中位置为i的元素*输 出:无*后置条件: 顺序表册除了一个元素,表长减1*/实现代码:template datatype SeqList:Delete(int i) int item,j; if (leng

6、th=0) cout表为空,无法删除元素!endl; if (ilength) couti不合法!endl; item=datai-1;/获得要删除的元素值 for (j=i; jlength; j+) dataj-1=dataj; /注意数组下标从0记 length-; return item;(6)遍历线性表元素算法/*输 入:无*前置条件:顺序表存在*功 能:顺序表遍历*输 出:输出所有元素*后置条件:无*/实现代码:templatevoid SeqList:display() if(length=0) cout表为空,无法输出!endl; for(int i=0;ilength;i+)

7、 coutdatai; (7)获得线性表长度算法/*输 入:无*前置条件:顺序表存在*功 能:输出顺序表长度*输 出:顺序表长度*后置条件:无*/实现代码:template int SeqList:Length() return Length;(8)在顺序线性表中查找e值,返回该元素的位序算法/*输 入:查询元素值e*前置条件:顺序表存在*功 能:按值查找值的元素并输出位置*输 出:查询元素的位置*后置条件:无*/实现代码:template int SeqList:Locate(datatype item) for (int i=0; ilength; i+) if (datai=item)

8、return i+1 ; /下标为i的元素等于item,返回其序号i+1 return 0; /查找失败(9)获得顺序线性表第i个元素的值/*输 入:查询元素位置i*前置条件:顺序表存在,i要合法*功 能:按位查找位置为i的元素并输出值*输 出:查询元素的值*后置条件:无*/实现代码:template datatype SeqList:Get(int i) if (ilength) couti不合法!endl; else return datai-1;(10)判表空算法/*输 入:无*前置条件:无*功 能:判表是否为空*输 出:为空返回1,不为空返回0*后置条件:无 */实现代码:templa

9、te bool SeqList:Empty() if (length=0) return 1; else return 0; (11)求直接前驱结点算法/*输 入:要查找的元素e,待存放前驱结点值e1*前置条件:无*功 能:查找该元素的所在位置,获得其前驱所在位置。*输 出:返回其前驱结点的位序。*后置条件:e1值为前驱结点的值*/实现代码:templateint SeqList:Pre(datatype item) int k=Locate(item)-1; if (k0) return k; else cout无前驱结点!endl; return 0; (12)求直接后继结点算法/*输 入

10、:要查找的元素e,待存放后继结点值e1*前置条件:无*功 能:查找该元素的所在位置,获得其后继所在位置。*输 出:返回其后继结点的位序。*后置条件:e1值为后继结点的值*/实现代码:templateint SeqList:Suc(datatype item) int k=Locate(item)+1; if (klength) cout无后继结点!endl; return 0; else return k; 上机实现以上基本操作,写出main()程序:void main() SeqList Seq; /创建 if(Seq.Empty() cout线性表为空!endl; /判断是否为空操作 Se

11、q.Insert(1,1); Seq.Insert(2,2); Seq.Insert(3,3); Seq.Insert(4,4); Seq.Insert(5,5); /插入元素操作 cout输出插入的五个元素:endl; Seq.display(); /按序号依次输出各元素 coutendl; cout2是第Seq.Locate(2)个元素endl; /查找元素位置 cout第五个元素是:Seq.Get(5)endl; /查找第五个元素 cout线性表的长度为:Seq.Length()endl; /输出线性表长度 Seq.Delete(3); /删除元素 cout删除第三个元素后的线性表为:e

12、ndl; Seq.display(); /输出删除元素后的线性表 coutendl; cout元素2前驱结点的位置为:Seq.Pre(2)endl; /获得前驱结点位置 cout元素2前驱结点的数值为:Seq.Get(Seq.Pre(2)endl; /获得前驱结点 cout元素4后继结点的位置为:Seq.Suc(4)endl; /获得后继结点位置 cout元素4后继结点的数值为:Seq.Get(Seq.Suc(4)endl; /获得后继结点要求对每个算法都加以测试,判断是否正确;并测试不同类型数据的操作。粘贴测试数据及运行结果:2、用以上基本操作算法,实现A=AUB算法。(利用函数模板实现)/*输 入:集合A,集合B*前置条件:无*功 能:实现A=AUB*输 出:无*后置条件:A中

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

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