数据结构实验报告实验一

上传人:无*** 文档编号:90386753 上传时间:2022-05-14 格式:DOC 页数:34 大小:79KB
收藏 版权申诉 举报 下载
数据结构实验报告实验一_第1页
第1页 / 共34页
数据结构实验报告实验一_第2页
第2页 / 共34页
数据结构实验报告实验一_第3页
第3页 / 共34页
资源描述:

《数据结构实验报告实验一》由会员分享,可在线阅读,更多相关《数据结构实验报告实验一(34页珍藏版)》请在装配图网上搜索。

1、-深 圳 大 学 实 验 报 告 课程名称: 数据构造实验与课程设计 实验工程名称: 实验一:顺序表的应用 学院: 计算机与软件学院 专业: 指导教师: 蔡平 报告人: 文成 *: 2011150259 班级: 5 实验时间:2012-9-17 实验报告提交时间:2012-9-24 教务部制一、实验目的与要求:目的:1.掌握线性表的根本原理2.掌握线性表地根本构造3.掌握线性表地创立、插入、删除、查找的实现方法要求:1.熟悉C+语言编程2.熟练使用C+语言实现线性表地创立、插入、删除、查找的实现方法二、实验内容:Problem A: 数据构造实验1顺序表例程Description实现顺序表的创

2、立、插入、删除、查找Input第一行输入顺序表的实际长度n第二行输入n个数据第三行输入要插入的新数据和插入位置第四行输入要删除的位置第五行输入要查找的位置Output第一行输出创立后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行插入操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行删除操作后,顺序表内的所有数据,数据之间用空格隔开第四行输出指定位置的数据Sample Input611 22 33 44 55 66888 352Sample Output11 22 33 44 55 66 11 22 888 33 44 55 66 11 22 888 33 55 66 22HI

3、NT第i个位置是指从首个元素开场数起的第i个位置,对应数组内下标为i-1的位置Problem B: 数据构造实验1顺序表的数据交换Description实现顺序表内的元素交换操作Input第一行输入n表示顺序表包含的n个数据第二行输入n个数据,数据是小于100的正整数第三行输入两个参数,表示要交换的两个位置第四行输入两个参数,表示要交换的两个位置Output第一行输出创立后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行第一次交换操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行第二次交换操作后,顺序表内的所有数据,数据之间用空格隔开注意参加交换位置的合法性检查,如果发现位置不

4、合法,输出error。Sample Input511 22 33 44 552 40 1Sample Output11 22 33 44 55 11 44 33 22 55 errorHINT此题执行两次交换操作,注意写好输入接口。Problem C: 数据构造实验1顺序表的合并Description假定两个顺序表的数据已经按照从小到大的顺序排列,实现两个顺序表的合并Input第一行输入n表示顺序表A包含的n个数据第二行输入n个数据,数据是小于100的正整数第三行输入m表示顺序表B包含的n个数据第二行输入m个数据,数据是小于100的正整数Output输出合并后的顺序表内的所有数据,数据之间用空

5、格隔开Sample Input311 33 55422 44 66 88Sample Output11 22 33 44 55 66 88 问题 D: 数据构造实验1顺序表的循环移位题目描述顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1位,即原来的尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5。以下是移位的多个例子:原数据:1,2,3,4,5,6左移3位:4,5,6,1,2,3,与原数据比照右移4位:3,4,5,6,1,2,与原数据比照请编写程序实现顺序表的循环

6、移位操作输入第一行输入n表示顺序表包含的n个数据第二行输入n个数据,数据是小于100的正整数第三行输入移动方向和移动的位数,左移方向为0,右移方向为1第三行输入移动方向和移动的位数,左移方向为0,右移方向为1输出第一行输出创立后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开如果发现输入的移动方向或位数不合法,不执行移位操作,输出error样例输入511 22 33 44 550 21 4样例输出11 22 33 44 55 33 44 55 11 22 44 55 11 2

7、2 33 三、 实验步骤与过程:思路:1. 顺序表类定义2.顺序表的创立、插入、删除、查找等功能的实现3.顺序表的测试运行源代码:A:*includeusing namespace std;class Listprivate:int *elem;/数组元素int listsize;/顺序表最大长度int length;/顺序表当前长度public:List(int size);/构造函数List();/析构函数int ListLength();/获取顺序表的实际长度int ListInsert(int i,int e);/插入一个元素int ListDelete(int i);/删除一个元素,

8、返回删除的元素int GetElem(int i);/获取一个元素,返回元素值;List:List(int size)/构造函数listsize=size;length=0;elem=new intlistsize;List:List()/析构函数deleteelem;/回收空间int List:ListLength()/获取顺序表的实际长度return length;int List:ListInsert(int i,int e)/插入一个元素if (length=listsize)return 0;/顺序表已满if (ilength+1)return 0;/i值不合法if (i=lengt

9、h+1)elemlength=e;elsefor (int j=length;ji-1;j-)elemj=elemj-1;/位置i后面的元素全部后移一位elemi-1=e;length+;return 1;int List:ListDelete(int i)/删除一个元素,返回删除的元素if (length=0)return 0;if (ilength)return 0;int temp=elemi-1;for (int j=i-1;jlength;j+)/位置i后面的元素全部前移一位elemj=elemj+1;length-;return temp;int List:GetElem(int

10、i)/获取一个元素,返回元素值if(ilength)return 0;return elemi-1;int main()int i,len,temp;List myList(20);/创立一个顺序表,最大长度为20cinlen;for(i=1;itemp;myList.ListInsert(i,temp);for(i=1;imyList.ListLength()+1;i+)/打印顺序表coutmyList.GetElem(i) ;coutelemj;/输入插入数以及插入的位置myList.ListInsert(j,elem);/执行插入操作for(i=1;imyList.ListLength(

11、)+1;i+)/打印插入后的结果coutmyList.GetElem(i) ;coutj;/输入删除的位置myList.ListDelete(j);/执行删除操作for(i=1;imyList.ListLength()+1;i+)/打印插入后的结果coutmyList.GetElem(i) ;coutj;coutmyList.GetElem(j)endl;/输出指定位置的数据return 0;B:*includeusing namespace std;class Listprivate:int *elem;/数组元素int listsize;/顺序表最大长度int length;/顺序表当前长

12、度public:List(int size);/构造函数List();/析构函数int ListLength();/获取顺序表的实际长度int ListInsert(int i,int e);/插入一个元素int ListDelete(int i);/删除一个元素,返回删除的元素int GetElem(int i);/获取一个元素,返回元素值int swap(int a,int b);/交换二个元素;List:List(int size)/构造函数listsize=size;length=0;elem=new intlistsize;List:List()/析构函数deleteelem;int

13、 List:ListLength()/获取顺序表的实际长度return length;int List:ListInsert(int i,int e)/插入一个元素if (length=listsize)return 0;/顺序表已满if (ilength+1)return 0;/i值不合法if (i=length+1)elemlength=e;elsefor (int j=length;ji-1;j-)/位置i后面的元素全部后移一位elemj=elemj-1;elemi-1=e;length+;return 1;int List:ListDelete(int i)/删除一个元素,返回删除的元

14、素if (length=0)return 0;if (ilength)return 0;int temp=elemi-1;for (int j=i-1;jlength;j+)/位置i后面的元素全部前移一位elemj=elemj+1;length-;return temp;int List:GetElem(int i)/获取一个元素,返回元素值if(ilength)return 0;return elemi-1;int List:swap(int a,int b)/交换二个元素if (alength | blength | a=b)coutlen;for(i=1;itemp;myList.Lis

15、tInsert(i,temp);for(i=1;imyList.ListLength()+1;i+)/打印顺序表coutmyList.GetElem(i) ;cout*y;if (myList.swap(*,y)/交换这二个元素for(i=1;imyList.ListLength()+1;i+)/打印交换元素后的顺序表coutmyList.GetElem(i) ;cout*y;if (myList.swap(*,y)/交换这二个元素for(i=1;imyList.ListLength()+1;i+)/打印交换元素后的顺序表coutmyList.GetElem(i) ;coutendl;retu

16、rn 0;C:*includeusing namespace std;class Listprivate:int *elem;int listsize;/顺序表最大长度int length;/顺序表当前长度public:List(int size);/构造函数List();/析构函数int ListLength();/获取顺序表的实际长度int ListInsert(int i,int e);/插入一个元素int ListDelete(int i);/删除一个元素,返回删除的元素int GetElem(int i);/获取一个元素,返回元素值friend int func(List &a,Li

17、st &b);/实现两个顺序表的合并;List:List(int size)/构造函数listsize=size;length=0;elem=new intlistsize;List:List()/析构函数deleteelem;/回收空间int List:ListLength()/获取顺序表的实际长度return length;int List:ListInsert(int i,int e)/插入一个元素if (length=listsize)return 0;/顺序表已满if (ilength+1)return 0;/i值不合法if (i=length+1)elemlength=e;else

18、for (int j=length;ji-1;j-)elemj=elemj-1;/位置i后面的元素全部后移一位elemi-1=e;length+;return 1;int List:ListDelete(int i)/删除一个元素,返回删除的元素if (length=0)return 0;if (ilength)return 0;int temp=elemi-1;for (int j=i-1;jlength;j+)elemj=elemj+1;/位置i后面的元素全部前移一位length-;return temp;int List:GetElem(int i)/获取一个元素,返回元素值if(ile

19、ngth)return 0;return elemi-1;int func(List &A,List &B)/实现两个顺序表的合并int a; for (int i=0;iB.ListLength();i+) a=-1;for(int j=0;jA.ListLength();j+)if (B.elemi=a;k-)/位置i后面的元素全部前移一位 A.elemk+1=A.elemk; A.elema=B.elemi;/将B.elemi插到位置i处 A.length+;/顺序表当前长度+1 return 0;int main()int i,len,temp;List myList1(100);/创

20、立一个顺序表1,最大长度为100List myList2(100);/创立一个顺序表2,最大长度为100cinlen;/输入顺序表1长度for(i=1;itemp;myList1.ListInsert(i,temp);cinlen;/输入顺序表2长度for(i=1;itemp;myList2.ListInsert(i,temp);func(myList1,myList2);/将顺序表1与顺序表2合并for(i=1;imyList1.ListLength()+1;i+)/输出合并后的结果coutmyList1.GetElem(i) ;coutendl;return 0;D:*includeusi

21、ng namespace std;class Listprivate:int *elem;int listsize;/顺序表最大长度int length;/顺序表当前长度public:List(int size);/构造函数List();/析构函数int ListLength();/获取顺序表的实际长度int ListInsert(int i,int e);/插入一个元素int ListDelete(int i);/删除一个元素,返回删除的元素int GetElem(int i);/查找一个元素,返回元素值int Move(int a,int b);List:List(int size)/构造

22、函数listsize=size;length=0;elem=new intlistsize;List:List()/析构函数deleteelem;/回收空间int List:ListLength()/获取顺序表的实际长度return length;int List:ListInsert(int i,int e)/插入一个元素if (length=listsize)return 0;/顺序表已满if (ilength+1)return 0;/i值不合法if (i=length+1)elemlength=e;elsefor (int j=length;ji-1;j-)elemj=elemj-1;/

23、位置i后面的元素全部后移一位elemi-1=e;length+;return 1;int List:ListDelete(int i)/删除一个元素,返回删除的元素if (length=0)return 0;if (ilength)return 0;int temp=elemi-1;for (int j=i-1;jlength;j+)elemj=elemj+1;/位置i后面的元素全部前移一位length-;return temp;int List:GetElem(int i)/查找一个元素,返回元素值if(ilength)return 0;return elemi-1;int List:Mov

24、e(int a,int b)int i,j;int *p=new int2*length;/先构造一个2倍长度的空间for (i=0;ilength;i+)pi=elemi;for (j=0;jlength;j+,i+)pi=elemj;/实际上p指向的是elem*2的数组if (a=0)/假设a=0,则向左移for(i=0;ilength;i+)elemi=pi+b;/将向左移b位后的结果给elemif (a=1)/假设a=1,则向右移for(i=0;ilen;/输入顺序表长度for(i=1;itemp;myList.ListInsert(i,temp);for(i=1;imyList.Li

25、stLength()+1;i+)/打印顺序表coutmyList.GetElem(i) ;coutab;myList.Move(a,b);/循环移位for(i=1;imyList.ListLength()+1;i+)/打印顺序表coutmyList.GetElem(i) ;coutab;/循环移位myList.Move(a,b);for(i=1;imyList.ListLength()+1;i+)/打印顺序表coutmyList.GetElem(i) ;coutendl;return 0;四、实验结果及数据处理分析:A:实验根本到达实验要求B:实验根本到达实验要求C:实验根本到达实验要求D:实

26、验根本到达实验要求五、实验结论与体会: 从这个实验中我学会了线性表一些根本操作,例如插入、查找和删除。也复习了一边C+语言程序的标准。原先试了很屡次都是出现错误,最后才发现太久没编程,犯了很多低级错误,从中体会到编程是需要时间和耐心的。 要求挺简单的,就是如此简单的插入、查找、删除、循环移位等。程序写完了,但是还发现程序中还有许多不完善的地方、不严谨的地方,如异常处理,在不按正确输入格式输入时,会出现程序错误或死了的情况。指导教师批阅意见:成绩评定: 指导教师签字: 年 月 日备注:注:1、报告内的工程或内容设置,可根据实际情况加以调整和补充。 2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!