数据结构实验报告 顺序表

上传人:世*** 文档编号:173196957 上传时间:2021-03-12 格式:DOC 页数:24 大小:779.50KB
返回 下载 相关 举报
数据结构实验报告 顺序表_第1页
第1页 / 共24页
数据结构实验报告 顺序表_第2页
第2页 / 共24页
数据结构实验报告 顺序表_第3页
第3页 / 共24页
数据结构实验报告 顺序表_第4页
第4页 / 共24页
数据结构实验报告 顺序表_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《数据结构实验报告 顺序表》由会员分享,可在线阅读,更多相关《数据结构实验报告 顺序表(24页珍藏版)》请在金锄头文库上搜索。

1、江西理工大学软件学院计算机类课程实验报告课程名称: 数据结构 班 级: 姓 名: 学 号: 江西理工大学软件学院实验二:顺序表 2012年11月10日一. 实验目的掌握顺序表的逻辑结构、存储结构、以及操作。二. 问题描述线性表是由n(n0)个元素(结点)a1, a2, , an组成的有限序列,其中ai中的i称为该数据元素的位置(序号),n为数据元素的个数(表的长度),当n等于0时称为空表。按逻辑次序依次把数据元素存放在一组连续的地址存储单元里的线性表称为顺序表。在这里,我们通过C+中的动态数组来实现顺序表的存放,并通过建立顺序表类实现它的各种操作。三. 实验要求实现顺序表的三个框架操作:随机生

2、成,用已有顺序表初始化另一个顺序表,输入顺序表。以及十个基本操作:在第i个元素之前插入元素,判断是否为空,求元素个数,取第i个元素,查找第一个与e满足compare()关系的元素,返回元素的前驱,返回后继,删除第i个元素,把一个顺序表赋值给另一个顺序表,置空顺序表。四. 实验环境3323机房OS:WxpC环境:1、TC2.0 2、VC+ 6.0五运行结果程序开始界面框架操作:1. 随机生成顺序表(元素值为0到99之间的整数)2. 用已有的顺序表初始化另一个顺序表3. 输入顺序表基本操作:1. 在第i个元素之前插入一个元素2. 判断顺序表是否为空3. 求顺序表中元素的个数4. 取第i个元素5.

3、查找第一个与之满足compare()关系的元素序号6. 返回某元素的前驱7. 返回某元素的后继8. 删除第i个元素9. 把一个顺序表复制给另一个顺序表10. 把顺序表置空11.顺序表的运用六 实验心得熟悉最基本的数据类型顺序表,同时我们让我们熟练C+的基本操作,模板的使用,以及模块化的设计思想。同时也运用顺序表做一些简单的运用,比如顺序表的并交差运算,学生管理系统等等。在这次的实验中,我掌握了很多C+的特性,在运用顺序表时,由于水平的原因,只是把简单的并交差运算写完,我想通过以后的学习,我们能够将其实现学生管理系统。在实验中我也遇到很多的问题,输入输出的重载,输出格式的控制等等,在以后的实验中

4、吸取经验和教训,提高自己的水平。五 实验代码基类:SqList.h/myhead.h包含自己设定的一些常量和类型#ifndef MYHEAD_H#define MYHEAD_H/#includeD:数据结构C+实验2myhead.h#includeD:UsersfclzDocumentsVisual Studio 2010Projects数据结构C+实验2myhead.h#endif/顺序表的一些常量说明#define LIST_MAX_SIZE 100#define LISTINCERMENT 10/随机数生成必须 #define _CRT_RAND_S #include #include

5、#include /顺序表数据结构的C+类的声明(基类)template class SqListprotected:ElemType *elem;int listSize;int n;public:/构造函数,析构函数,拷贝构造函数的声明SqList();virtual SqList();SqList(const SqList& otherL);/顺序表的方法/有序顺序表的折半查找int bin_Search(ElemType key);/把顺序表置空void clear();/删除第i个元素Status deleteElem(int i,ElemType& e);/取第i个元素int ge

6、tElem(int i,ElemType& e);/求顺序表中元素的个数int getLength();/求顺序表存储空间的大小int getListSize();/在第i个元素之前插入一个元素Status insert(int i,ElemType e);/判断顺序表是否为空bool isEmpty();/查找第1个与e满足compare关系的元素的序号int locateElem(ElemType e,Status(*compare)(ElemType,ElemType);/返回某个元素的后继Status nextElem(ElemType e,ElemType& next_e);/重载复

7、制运算符SqList operator =(SqList rightL);/返回某个元素的前驱Status priorElem(ElemType e,ElemType& prior_e);/在顺序表中顺序查找某个元素、int sequentialSearch(ElemType e);/顺序表的方法/有序顺序表的折半查找template int SqList:bin_Search(ElemType key)int low,mid,high;/查找区域的起始、中间以及最后一个元素的下标low=0,high= n-1;while(low=high)mid=(low+high)/2;if(elemmi

8、d=key)return mid+1;else if(elemmidkey)low=mid+1;else high=mid-1;return 0;/把顺序表置空template void SqList:clear()n=0;/删除第i个元素template Status SqList:deleteElem(int i,ElemType& e)if(in) return ERROR;e=elemi-1;for(int j=i+1;j=n;+j)elemj-2=elemj-1;-n;return OK;/取第i个元素template Status SqList:getElem(int i,Elem

9、Type& e)if(in) return ERROR;e=elemi-1;return OK;/求顺序表中元素的个数template int SqList:getLength()return n;/取顺序表存储空间的大小template int SqList:getListSize()return listSize;/在第i元素之前插入一个元素template Status SqList:insert(int i,ElemType e)ElemType *newbase;if(in+1)return ERROR;if(n=listSize)newbase =new ElemTypelistS

10、ize+LISTINCERMENT;assert(newbase!=0);for(int j=1;j=i;-j)elemj=elemj-1;elemi-1=e;+n;return OK;/判断顺序表是否为空template bool SqList:isEmpty()return n?false:true;/查找第1个与某元素e满足compare()关系元素template int SqList:locateElem(ElemType e,Status (*compare)(ElemType,ElemType) int i;for(i=1;i=n&!(*compare)(elemi-1,e);+

11、i);if(i=n)return i;elsereturn 0;/返回某个元素的后继template Status SqList:nextElem(ElemType e,ElemType& next_e)int i=locateElem(e,equal);if(i1|i=n)return ERROR;elsegetElem(i+1,next_e);return OK;/重载运算符的定义template SqList SqList:operator=(SqListrightL)if(this!=&rightL)if(listSizerightL.listSize)delete elem;elem=new ElemTyperightL.listSize;assert(elem!=0);listSize=rightL.listSize;n=rightL.n;for(int i=1;i=n;+i)elemi-1=rightL.elemi-1;return *this;/返回某个元素的前驱template Status SqL

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

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