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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构试验报告.docx

1、数据结构试验报告华北电力大学科技学院实 验 报 告 实验名称 数据结构试验 课程名称 数据结构 专业班级:网络10K1 学生姓名:meter学 号:10902030125 成 绩:指导老师:张琦 实验日期:2013年3月实验一 顺序表及其应用一、实验目的及要求1、实验目的(1)熟悉VC+上机环境,进一步掌握C语言的结构特点。(2)掌握线性表的顺序存储结构的定义及C语言实现。(3)掌握线性表在顺序存储结构即顺序表中的各种基本操作的实现。(4)掌握栈和队列的顺序表示和实现。2、实验要求(1)用顺序存储结构实现栈和循环队列。(2)编写完整程序完成下面的实验内容并上机运行。(3)整理并上交实验报告。二

2、、实验内容 1. 约瑟夫环的实现:设有n个人围坐在圆桌周围,现从某个位置 i 上的人开始报数,数到 m 的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再是数到m的人站出来。依次重复下去,直到全部的人都站出来,按出列的先后又可得到一个新的序列。由于该问题是由古罗马著名的史学家Josephus提出的问题演变而来,所以通常称为Josephus 问题。 例如:当n=8,m=4,i=1时,得到的新序列为: 4,8,5,2,1,3,7,6 编写程序选择顺序存储方式模拟整个过程,并依次输出出列的各人的编号。三源程序:#includeusing namespace std;#defin

3、e Max 101int main() int i,k,out,all,count,start; int personMax;/定义保存每个人的数组 cout-¥欢迎进入约瑟夫游戏¥-endl; coutBy meter!endl; coutendl; coutendl; cout请输入游戏人数(最大为100):all; cout请输入要数的人数个数:count; cout请输入开始数的位置:start; for(i=1;i=all;i+) personi=i; /初始化数 cout循环队列初始化完成。endl; for(int i=1;i=all;i+) coutpersonit; cout

4、all)/若开始人数大于总人数提示出错 couterror!n; k=0;/1 2 3 的计数器 out=0;/出局的人数 while(outall) if(personi!=0)/取出后置零 k+;/计数器加一 if(k=count) coutpersoni;/打印输出该出局的人数 personi=0;/出局后此位置置零 k=0;/计数器置零 out+;/出局人数加一 i+;/人数后移加一 if(i=all+1) i=1;/当i=最后一个时,让i等于第一 for(i=1;i=all;i+)/循环输出最后一个人 if(personi!=0)/判断是否已经输出过 coutpersoni; bre

5、ak; coutn; system(pause); return 0;四实验结果:实验二 链表及其应用一、实验目的及要求1、实验目的(1)熟悉VC+上机环境,进一步掌握C语言的结构特点。(2)掌握线性表的链式存储结构即单链表的定义及C语言实现。(3)掌握线性表在链式存储结构即单链表中的各种基本操作。(4)掌握栈和队列的链式存储结构的表示和实现。2、实验要求(1)用链式存储结构实现单链表(和单向循环链表)的建立、查找和删除等运算。(2)编写完整程序完成下面的实验内容并上机运行。(3)整理并上交实验报告。二、实验内容 1.约瑟夫环的问题:设有n个人围坐在圆桌周围,现从某个位置 i 上的人开始报数,

6、数到 m 的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再是数到m的人站出来。依次重复下去,直到全部的人都站出来,按出列的先后又可得到一个新的序列。由于该问题是由古罗马著名的史学家Josephus提出的问题演变而来,所以通常称为Josephus 问题。 例如:当n=8,m=4,i=1时,得到的新序列为: 4,8,5,2,1,3,7,6用单向循环链表存储结构模拟此过程。三源程序:#include using namespace std;#include #include typedef struct Node int data; struct Node *next; *P

7、ointer ;/声明链表结构Pointer creatList(Pointer head,int x)/创建链表 int i; Pointer p,q; head=new Node;/申请空间 head-data=x;/修正让第一个节点的data值为最大 p=head;/p为辅助指针指尾节点 for(i=1;idata=i;/赋值data等于i p-next=q; p=q;/p指向尾节点 p-next=head;/让尾节点的next域指向头结点 return (head);/返回头结void del (Pointer Previous,Pointer Point)/删除节点Previous-

8、next=Point-next;/让要删除的节点的前一个的next域指向要删除节点的next域 free(Point);/释放节点空间 int main() cout-¥欢迎进入约瑟夫游戏¥-endl; cout 循环链表实现endl; coutBy meter!endl; coutendl; coutendl; int all,count,start,i,j,out; Pointer Node,point,previous,pointer; Node=NULL;/初始化节点 coutall; Node=creatList(Node,all);/创建链表 coutcount; coutstar

9、t; if (startall) /溢出出错提示 couterrorn; else cout总人数为:all; cout周期:count; cout起始位置:startendl; coutendl; cout出局的顺序为:; point=Node;/point为辅助变量 j=1;/初始化计数器 while(jnext;/此节点指向下一个 j+;/计数器加一 out=0;/出局的人数 while(outall-1) for(j=1;jnext;/此节点后移 previous=previous-next;/前节点后移 coutdata;/打印输出要出局的人 pointer=point-next;/

10、保留point的接口 del(previous,point);/删除此节点 point=pointer;/重新赋值 out+;/出局的人数加一 coutdata;/输出最后一个人 delete(point);/释放此节点 coutendl; system(pause); return 0;四运行结果:实验三 二叉树一、实验目的及要求1、实验目的(1)通过实验,掌握二叉树的建立与存储(2)通过实验,掌握二叉树的遍历方法2、实验要求 (1)二叉树需要用二叉链表作为节点类型描述。(2)二叉树的遍历递归算法能够转换为非递归算法。(3)编写完整程序完成下面的实验内容并上机运行。(4)整理并上交实验报告。

11、二、实验内容 1、问题描述利用先序遍历建立一棵二叉树,并分别用前序、中序、后序遍历该二叉树 2、节点形式 LchilddataRchild 3、说明 (1)输入数据:1,2,3,0,0,4,0,0,5,0,0其中“0”表示空子树。 (2)输出数据: 先序:1,2,3,4,5 中序:3,2,4,1,5 后序:3,4,2,5,1三、实验步骤1. 建立自己的头文件BT.H,内容包括二叉链表的结构描述、二叉树的建立、二叉树的先序、中序与后序遍历算法。2. 建立二叉树,并通过调用函数, 输出先序遍历、中序遍历与后序遍历的结果。四源程序 #includeusing namespace std;typede

12、f struct btnode int data; struct btnode *Lchild,*Rchild; *bitreptr;/声明变量bitreptr MdPreorder()/先序建立二叉树 int x; bitreptr head; coutx; if (x=0) head=NULL; else head=new btnode;/为节点申请空间 if(!head) coutdata=x;/赋值给节点的data head-Lchild=MdPreorder(); /左孩子递归调用 head-Rchild=MdPreorder();/右孩子递归调用 return head;/返回头结

13、点 int PreOrder(bitreptr head) /*先序遍历*/ if(head!=NULL) /判断头结点是否为空 coutdata;/输出数据域 PreOrder(head-Lchild);/递归调用左孩子 PreOrder(head-Rchild);/递归调用右孩子 return 0;int InOrder(bitreptr head) /*中序遍历*/ if(head) InOrder(head-Lchild); coutdata; InOrder(head-Rchild); return 0;int PostOrder(bitreptr head) /*后序遍历*/ if

14、(head) PostOrder(head-Lchild); PostOrder(head-Rchild); coutdata; return 0;int main() bitreptr Head;/申请变量 Head=NULL;/初始化节点 cout友情提示:nn; cout先序输入一个节点按回车继续下个输入n; Head=MdPreorder();/建立二叉树 cout先序输出为:; PreOrder(Head);/先序输出 coutnn; cout中序输出为:; InOrder(Head);/中序输出 coutnn; cout后序输出为:; PostOrder(Head);/后序输出 c

15、outn; system(pause); return (0);五运行结果 : 六实验总结:1.调试时出现的问题及解决办法:利用带头结点的尾插法建立链表求解的时候,头节点的作用无法确定,导致编译通过,但是运行之后的结果都不是正确的运行结果。苦苦思索,包括和同学讨论,一直没能解决,最后决定改用另一种存储方法,将头节点直接改成NULL,最终测试的结果是正确的。用函数返回存储节点的地址的时候,函数中的一句没有问题的语句出现访问错误,更改函数从而解决了问题。2.这次做数据结构作业,不仅对开学一段时间内所学的知识有了更好的理解,而且很好地锻炼了自己的编程能力。发现心中了解程序的主要算法和真正写出来完全不是一回事,一开始做多项式的时候就是先写函数,后定义存储结构等,结果编译报错很多,不知道怎么修改,无奈只好改成做约瑟夫环问题了。在编程和写报告的过程中曾多次遇到各种各样的问题,通过与同学的交流以及自己独立思考,最终得到解决并顺利的完成了此次作业。总之一句话,获益良多。

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

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