




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线性表的顺序存储一、 实验目的1. 掌握线性表的顺序存储结构。2. 能熟练地利用顺序存储结构实现线性表的基本操作。3. 能熟练地掌握顺序存储结构中算法的实现。二、 实验内容1. 建立含有若干个元素的顺序表,并将结果在屏幕上输出。2. 对刚建立的顺序表实现插入、删除、修改、查找,并将结果在屏幕上输出。3. 解决约瑟夫问题:假设有n个人按1、2、3、n的顺序围成一圈,现在,从第s个人开始按1、2、3、m的顺序报数,数到m的人出圈,接着从出圈的下一个人开始重复此过程,直到所有人出圈为止。试用顺序表解决这个问题。三、 算法描述1. 第1题、第2题的算法提示对第1题,先定义顺序表的数据类型,然后以1n的序号建立顺序表,将输出结果单独定义成一个函数,以便后面反复使用它。对第2题,为操作方便,将插入、删除、修改、查找等操作都定义成单独的子函数形式。为查看这些操作的效果,可以在调用前后分别输出表的结果。2. 第3题的算法提示对于第3题,可以将n个人的编号存入一个一维数组中,表的长度就是人数n,因此,就可以用一维数组来代替顺序表。算法的思想是:先求出出圈人的编号,用一个临时单元保存它,然后从出圈人的后一个开始,直到最后一个,都按顺序向前移动一个位置,再将临时单元中的出圈人编号存入最后。当这个重复步骤完成后,数组中存放的是出圈人的逆序列。本题中,围圈的人数n、出圈的报数号m、开始报数的位置s在程序中预先给定为10、3、2。当然,也可以从键盘临时输入。四、 源程序 第1、2题的源程序及程序清单#includeusing namespace std;const int MaxSize=100;class Listpublic:List()length=0; / 建立一个空表List(int a, int n); /建立一个长度为n的顺序表List()int Length()return length; /求线性表的长度 int Get(int i); /按位查找int Locate(int x); /按值查找 void Insert(int i, int x); /插入操作void Delete(int i); /删除操作void PrintList(); /输出结果private:int dataMaxSize;int length;List:List(int a,int n)if(nMaxSize)cout参数非法endl;for(int i=0;in;i+) datai=ai;length=n;int List:Get(int i)if(ilength)cout查找位置非法endl;else cout该位置元素值为:datai-1endl; return 0;int List:Locate(int x)for(int i=0;ilength;i+)if(datai=x)cout该值元素的位置为:i+1=MaxSize)cout上溢endl;if(ilength+1)cout位置非法=i;j-)dataj=dataj-1;datai-1=x;length+;void List:Delete(int i)if(length=0)cout下溢endl;if(ilength)cout位置 非法endl;int x=datai-1;for(int j=i;jlength;j+)dataj-1=dataj;length-;coutxendl;void List:PrintList()for(int i=0;ilength;i+)coutdataiendl;int main()int b10=0,1,2,3,4,5,6,7,8,9;List c(b,10);int d,e,f,g,h;cout原顺序表为:endl;c.PrintList();coutd;c.Get(d);coute;c.Locate(e);coutfg;c.Insert(f,g);cout插入数据后的顺序表为:endl;c.PrintList();couth;c.Delete(h);cout删除数据后的顺序表为:endl;c.PrintList();return 0;程序运行结果:原顺序表为:0 1 2 3 4 5 6 7 8 9请输入要查找的位置:3该位置的元素值为 :2请输入要查找的元素值:6该元素的位置为:7请输入要插入的位置f和元素值g:5 7插入数据后的顺序表为: 0 1 2 3 7 4 5 6 7 8 9请输入待删元素的位置h:6删除数据后的顺序表为:0 1 2 3 7 5 6 7 8 9第三题的源程序及程序清单#include using namespace std;const int MaxSize=100;class Listpublic:List()length=0;List(int a, int n);List()int get(int i); int Length()return length;public: int dataMaxSize;int length;/构造函数List:List(int a, int n)if(nMaxSize) cout参数非法endl;for(int i=0;in;i+)datai=ai;length=n;/查找待出圈的编码int List:get(int i)int x=datai-1;for(int j=i;jlength;j+)dataj-1=dataj;length-;return x;int main()int a10=1,2,3,4,5,6,7,8,9,10; int b10;List L(a,10);int s, m, n;couts;coutm;/实现约瑟夫循环for(int i=0;i=n) bi=L.get(n); else n=n%L.Length(); bi=L.get(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进出口公司质量管理制度
- 美甲店店面卫生管理制度
- 会议设备操作管理制度
- 严格准军事化管理制度
- 产品经理职责管理制度
- 企业资金支付管理制度
- 人员出入公司管理制度
- 中小学校课堂管理制度
- 乡村员工公寓管理制度
- picc安全管理制度
- 欧美风格高级配色ppt
- 学堂云同等学力研究生公共英语(上)
- 中职学校师生数字素养现状与提升
- 飞机结构设计-课件
- 智能建造(利用智能技术和相关技术的建造方式)
- 浙江省烟草专卖局(公司)业务类岗位招聘考试真题及答案2022
- 工艺管道安装工程质量检验、试验计划
- D500-D505 2016年合订本防雷与接地图集
- 《史记》上册注音版
- GB/T 19326-2022锻制支管座
- GB/T 8923.2-2008涂覆涂料前钢材表面处理表面清洁度的目视评定第2部分:已涂覆过的钢材表面局部清除原有涂层后的处理等级
评论
0/150
提交评论