收藏 分享(赏)

数据结构实验报告(实验一).doc

上传人:tangtianxu2 文档编号:2876901 上传时间:2018-09-29 格式:DOC 页数:19 大小:159KB
下载 相关 举报
数据结构实验报告(实验一).doc_第1页
第1页 / 共19页
数据结构实验报告(实验一).doc_第2页
第2页 / 共19页
数据结构实验报告(实验一).doc_第3页
第3页 / 共19页
数据结构实验报告(实验一).doc_第4页
第4页 / 共19页
数据结构实验报告(实验一).doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

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

3、 66 22HINT第 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 个数据,

5、数据是小于 100 的正整数Output输出合并后的顺序表内的所有数据,数据之间用空格隔开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 位:

6、4,5,6,1,2,3,与原数据对比右移 4 位:3,4,5,6,1,2,与原数据对比请编写程序实现顺序表的循环移位操作输入第一行输入 n 表示顺序表包含的n 个数据第二行输入 n 个数据,数据是小于 100 的正整数第三行输入移动方向和移动的位数,左移方向为 0,右移方向为 1第三行输入移动方向和移动的位数,左移方向为 0,右移方向为 1输出第一行输出创建后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行移位操作后,顺序表内的所有数据,数据之间用空格隔开如果发现输入的移动方向或位数不合法,不执行移位操作,输出 error样

7、例输入511 22 33 44 550 21 4样例输出11 22 33 44 55 33 44 55 11 22 44 55 11 22 33 3、实验步骤与过程:思路:1.顺序表类定义2.顺序表的创建、插入、删除、查找等功能的实现3.顺序表的测试运行源代码:A:#includeusing namespace std;class Listprivate:int *elem; /数组元素int listsize; /顺序表最大长度int length; /顺序表当前长度public:List(int size); /构造函数List(); /析构函数int ListLength(); /获取顺

8、序表的实际长度int ListInsert(int i,int e); /插入一个元素int ListDelete(int i); /删除一个元素,返回删除的元素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) /插

9、入一个元素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; /位置 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=

10、i-1;jlength)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;ielemj; /输入插入数以及插入的位置myList.ListInsert(j,elem); /执行插入操作for(i=1;ij; /输入删除的位置myList.ListDelete(j); /执行删除操作for(i=1;ij;coutusing namespace std;class Listp

11、rivate: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 swap(int a,int b); /交换二个元素;List:List(int size)/构造函数list

12、size=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-) /位置 i 后面的元素全部后移一位elemj=

13、elemj-1;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)return 0;return elemi-1;int List:swap(int a,int b) /交换二个元素if (alength | blength | a=b)coutlen;for(i=1;itemp;myList.ListInsert(i,temp);for(i=1

14、;ixy;if (myList.swap(x,y) /交换这二个元素for(i=1;ixy;if (myList.swap(x,y) /交换这二个元素for(i=1;iusing 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

15、); /删除一个元素,返回删除的元素int GetElem(int i); /获取一个元素,返回元素值friend int func(List /实现两个顺序表的合并;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

16、0;/顺序表已满if (ilength+1)return 0;/i 值不合法if (i=length+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)return 0;return elem

17、i-1;int func(List for (int i=0;i=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); /创建一个顺序表 1,最大长度为 100List myList2(100); /创建一个顺序表 2,最大长度为 100cinlen;/输入顺序表 1 长度for(i=1;itemp;myList1.ListInsert(i,temp);

18、cinlen;/输入顺序表 2 长度for(i=1;itemp;myList2.ListInsert(i,temp);func(myList1,myList2); /将顺序表 1 与顺序表 2 合并for(i=1;iusing namespace std;class Listprivate:int *elem;int listsize; /顺序表最大长度int length; /顺序表当前长度public:List(int size); /构造函数List(); /析构函数int ListLength(); /获取顺序表的实际长度int ListInsert(int i,int e); /插入

19、一个元素int ListDelete(int i); /删除一个元素,返回删除的元素int GetElem(int i); /查找一个元素,返回元素值int Move(int a,int 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=lis

20、tsize)return 0;/顺序表已满if (ilength+1)return 0;/i 值不合法if (i=length+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)return

21、0;return elemi-1;int List:Move(int a,int b)int i,j;int *p=new int2*length;/先构造一个 2 倍长度的空间for (i=0;ilen;/输入顺序表长度for(i=1;itemp;myList.ListInsert(i,temp);for(i=1;iab;myList.Move(a,b); /循环移位for(i=1;iab; /循环移位myList.Move(a,b);for(i=1;imyList.ListLength()+1;i+)/打印顺序表coutmyList.GetElem(i)“ “;coutendl;retur

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报