版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.wd.wd.wd.中国矿业大学计算机学院实验报告课程名称 数据构造 实验名称_线性表操作实验报告要求:1.实验目的2.实验内容 3.实验步骤 4.运行结果 5.流程图 6.实验体会 一、实验目的1 熟悉并掌握线性表的逻辑构造、物理构造。2 熟悉并掌握顺序表的存储构造、 基本操作和具体的函数定义。3 熟悉VC+程序的 基本构造,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用。4 熟悉VC+操作环境的使用以及多文件的输入、编辑、调试和运行的全过程。二、实验要求 1 实验之前认真准备,编写好源程序。2 实验中认真调试程序,对运行结果进展分析,注意程序的正确性和强健性的验证。3
2、不断积累程序的调试方法。三、实验内容 基此题:1 对元素类型为整型的顺序存储的线性表进展插入、删除和查找操作。源程序:#include#include#includeconst LIST_INIT_SIZE=10;const LISTINCREMENT=1;typedef structint *elem;int length;int listsize;SqList;void InitList_Sq(SqList&L) /构造一个空的线性表LL.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int);if(!L.elem)exit(0); /存储分配失败L.le
3、ngth=0; /空表长度为0L.listsize=LIST_INIT_SIZE; /初始存储容量coutOK!endl;void ListInsert_Sq(SqList&L,int i,int j) /在顺序线性表L中第i个位置之前插入新的元素j, /i的合法值为1=i=ListInsert_Sq(L)+1if(iL.length+1)coutERROR!=L.listsize) /当前存储空间已满,增加分配int *newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int);if(!newbase)exit(0)
4、; /存储分配失败L.elem=newbase; /新基址L.listsize+=LISTINCREMENT; /增加存储容量int *q=&(L.elemi-1);for(int*p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=j;+L.length;coutOK!endl;/ListInsert_Sqvoid ListDelete_Sq(SqList&L,int i,int&j) /在顺序线性表L中删除第i个元素,并用j返回其值 /i的合法值为1=i=ListInsert_Sq(L)if(iL.length)coutERROR!endl; /i值不合法i
5、nt *p=&(L.elemi-1); /p为被删除元素的位置j=*p; /被删除元素的值赋给jint *q=L.elem+L.length-1; /表尾元素的位置for(+p;p=q;+p)*(p-1)=*p;-L.listsize; /被删除元素之后的元素左移coutOK!endl; /表长减1/ListDelete_Sqbool compare(int m,int n) if(m=n)return true;elsereturn false;int LocateElem_Sq(SqList L,int j) /在顺序线性表L中查找第1个值与j满足compare()的元素的位序 /假设找到
6、,那么返回其在L中的位序,否那么返回0int i=1; /i的初值为第1个元素的位序int *p=L.elem; /p的初值为第1个元素的存储位置while(i=L.length&!compare(*p,j)+i;p+;if(i=L.length)return i;elsereturn 0;/LocateElem_Sqvoid disp(SqList&L)int *p=L.elem;for(int i=0;iL.listsize;i+)cout*p ;p+;void main()SqList List;InitList_Sq(List);int *p=List.elem;int m,n,j,k
7、,x,y;for(int i=0;ix;*p=x;p+;List.length+;cout插入请按1;删除请按2;寻找请按3y;if(y=1)cout请输入插入位置和元素的值:mn;ListInsert_Sq(List,m,n);disp(List);else if(y=2)cout请输入要删除第几个元素:m;ListDelete_Sq(List,m,j);coutjendl;disp(List);elsecout请输入所要查找的元素:m;coutLocateElem_Sq(List,m)endl;coutendl;运行结果:加强、提高题:2、编写一个求解Josephus问题的函数。用整数序列
8、1, 2, 3, , n表示顺序围坐在圆桌周围的人。然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和强健性。最后分析所完成算法的时间复杂度。定义JosephusCircle类,其中含完成初始化、报数出圈成员函数、输出显示等方法。可以选做其中之一加强题:1、采用数组作为求解过程中使用的数据构造。提高题:2、采用循环链表作为求解过程中使用的数据构造。运行时允许指定任意n、s、m数值,直至输入 n = 0 退出程序。源程序:1加强:#include #include #incl
9、ude int a100;int josephus(int n,int s,int m)if(!(n*s*m)cout输入错误!endl;exit(0);int x=1,y=n;int i=s-1;int j;while(y)for(i=0;in;i+)if(ai+1)ai=x+;if(ai=m)ai=-1;couti+1出局!endl;x=1;y-;for(j=0;jn;j+)if(aj+1)aj=x+;if(aj=m)aj=-1; x=1;y-;if(!y)break;elsecoutj+1出局!endl;return (j+1);void main()int n,s,m,y=0;int
10、x;dofor(int i=0;i100;i+)ai=0;cout请输入参加游戏的总人数:n;cout请输入开场人的位置与报数长度:s;cinm;x=josephus(n,s,m);coutx胜出!endl;cout请选择:endl;cout1.重新游戏。 2.退出程序。:y;while(y=1);getch();运行结果:2提高:#includeusing namespace std;typedef struct LNodestruct LNode *next;int a;LNode,*LinkList;class JosephouCircle /定义一个类包括三个元素public:void
11、 SetValue();void PickOut();private:int n;int s;int m;void JosephouCircle:SetValue() /设置初值的大小cout请输入参加游戏的总人数:n;cout请输入开场人的位置:s;cout请输入报数长度:m;void JosephouCircle:PickOut()LinkList L;LNode *p,*q;int j,k;L=(LinkList)malloc(sizeof(LNode);L-next=NULL;LNode*r;r=L;for (int i=1;ia=i;p-next=NULL;r-next=p;r=p;p-next=L-next;p=L-next;j=1;while(p&jnext;+j;for(i=1;i=n;i+) for(j=1;jnext;q=p-next;p-next=q-next;p=q-next;k=q-a;cout输出的结果为:kendl;free(q);int main(int argc,char* argv)JosephouCircle Jo1;Jo1.SetValue();Jo1.PickOut();return 0;运行结果:四、实验体会与总结1、对于线性链表和顺序表都属于线性表问题,但是线性链表比顺序表要灵活,方便;2、线性表在做元素寻找的操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蒙药材种植员岗前创新意识考核试卷含答案
- 保健艾灸师岗位交接考核试卷含答案
- 栲胶蒸发工岗前职业规范考核试卷含答案
- 电线电缆挤橡工岗中应急处理考核试卷含答案
- 中药油剂工安全操作考核试卷含答案
- 洗缩联合挡车工岗前达标考核试卷含答案
- 营养师岗中安全风险考核试卷含答案
- 拉床工岗前创新应用考核试卷含答案
- 钟表维修工基础评估考核试卷含答案
- 末日资格试题及答案呈现
- 新药研究进展汇报
- 第1课 追求向上向善的道德
- 新建生产新能源汽车数字功放及散热器、机箱项目环评资料环境影响
- 膀胱癌护理疑难病例讨论
- 教师办公室座位表
- 西门子S7-1500 PLC技术及应用 课件 第7章 S7-1500 PLC 的上位机WinCC RT
- My Lovely Lady 高清钢琴谱五线谱
- 《数学课程论》课件
- 风机齿轮箱介绍课件
- 预埋件专项施工方案
- 测绘安全生产专题培训课件
评论
0/150
提交评论