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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构实验报告 顺序表.docx

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

3、. 取第i个元素5. 查找第一个与之满足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 #in

5、clude #include #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

6、 i,ElemType& e); /取第i个元素 int getElem(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

7、 nextElem(ElemType e,ElemType& next_e); /重载复制运算符 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,

8、high= n-1; while(low=high) mid=(low+high)/2; if(elemmid=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

9、-1; -n; return OK;/取第i个元素template Status SqList:getElem(int i,ElemType& 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) ElemTyp

10、e *newbase; if(in+1) return ERROR; if(n=listSize) newbase =new ElemTypelistSize+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(ElemTyp

11、e e,Status (*compare)(ElemType,ElemType) int i; for(i=1;i=n&!(*compare)(elemi-1,e);+i); if(i=n) return i; else return 0;/返回某个元素的后继template Status SqList:nextElem(ElemType e,ElemType& next_e) int i=locateElem(e,equal); if(i1|i=n) return ERROR; else getElem(i+1,next_e); return OK;/重载运算符的定义template SqL

12、ist 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 SqList:priorElem(ElemType e,ElemTy

13、pe& prior_e) int i=locateElem(e,equal); if(i=1) return ERROR; else getElem(i-1,prior_e); return OK;/在顺序表中顺序查找某个元素template int SqList:sequentialSearch(ElemType key) for(int i=1;in& key!=elemi-1;i+); if(i=n) return i; else return 0;/构造函数的实现template SqList:SqList() elem =new ElemTypeLIST_MAX_SIZE; asse

14、rt(elem!=0); listSize=LIST_MAX_SIZE; n=0;/析构函数的实现template SqList:SqList() delete elem;/拷贝构造函数的实现template SqList:SqList(const SqList& otherL) elem=new ElemTypeotherL.listSize; assert(elem!=0); listSize=otherL.listSize; n=otherL.n; for(int i=1;i=n;i+) elemi-1=otherL.elemi-1;派生类MySqList.h#ifndef SQLIST

15、_H#define SQLIST_H#includeSqList.h#endif#include template class MySqList:public SqListpublic: /读输入数据 void read(istream& in); /显示数据 void display(ostream& out)const; /生成随机顺序表 Status randSql(int n,MySqList& otherS);/派生类的实现/输入template void MySqList:read(istream& in) coutn; for(int i=0;in;i+) /coutnendl;

16、 cout请输入顺序表的第i+1elemi; /n+; coutendl;template istream& operator (istream& in,MySqList& iL) iL.read(in); return in;/输出template void MySqList:display(ostream& out) const for(int i=0;in;i+) outi+1t; outendl; for(int i=0;in;i+) outelemit; outendlendl;template ostream& /*MySqList:*/operator (ostream& out

17、,const MySqList& oL) oL.display(out); return out;/生成随机数顺序表template Status MySqList:randSql(int n,MySqList& otherS) errno_t err; unsigned int number; int max=100; if(notherS.listSize) return ERROR; else for(int i=0;in;i+) err = rand_s(&number); if (err != 0) printf_s(The rand_s function failed!n); otherS.elemi=(unsigned int)(double)number /(double) UINT_MAX + 1 ) * 100.0) + 1; otherS.n=n; return OK;

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

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