- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2010数据构实验指导书
《数据结构B》实验指导书
目 录
实验说明及要求 3
实验一 线性表 4
实验二 栈 6
实验三 队列 8
实验四 树 10
实验五 散列表 14
实验六 排序 2
实验七 查找 5
实验八 图 8
综合设计考核 11
附录1 在Visual Studio.net 2003中建立、编译和运行程序 12
附录2 使用教材提供的参考文件的方法 17
附录3 如何设置编译器生成C代码 20
参考文献 21
实验说明及要求
一 实验说明
《数据结构B》实验是为了辅助《数据结构B》n(n=0)个数据元素组成的有限序列。线性表中的数据元素可以是各种各样的,但同一线性表中的数据元素必须有相同的属性,因此是属于同一数据类型的。
在计算机内,可以用不同的方式来表示线性表,其中最简单和最常用的方式是用一组地址连续存储单元依次存储线性表中的元素。其特点是逻辑关系上相邻的两个元素在物理位置上也相邻。一般地,线性表的顺序存储结构可用一个一维数组结构来描述。用这种方法存储的线性表简称为顺序表。线性表的链式存储结构(也称链表)的特点是用一组任意的存储单元存储线性表中的数据元素,不要求逻辑上相邻的元素在物理位置上也相邻。链表中的结点可用C语言中的结构数据类型来描述,也可以用C++语言中类来实现。链表中的结点只有一个链域的链表称为单链表。循环链表则是一种首尾相接的链表。
对线性表首先要掌握作为抽象数据类型(ADT)的那些基本操作,其次才是具体实现的细节。
实验要求(课题一必做,课题二选做)
实验课题一:
a、(C++语言实现):
使用教材参考代码中给出的线性表类构造一个表,查找表内是否有某元素,如果有则交换该元素和它相邻的下一元素的位置;
(2和3中选一个即可)为链表类List增加一个成员函数reverse,使其具备能倒置链表中元素的功能。写好的表倒置函数的时间复杂度应该是?(n);
为List链表实现增加逆转迭代器类(reverse iterators),并增加方法rbegin和rend,具体要求参见教科书109页习题3.16。
b、?(n)。
课题一的具体实验内容
1、构造元素类型为整型的线性表,将以下元素插入分别插入线性表:
34 56 20 9 15 5
2、查找表中是否存在元素20,实现元素20与元素9的交换;
3、按照课题要求编写函数,实现线性表元素34 56 9 20 15 5的倒置,即倒置后的表应为 5 15 20 9 56 34 。
*实验课题二:约瑟夫(Josephus)问题的求解(循环链表的使用,使用C和C++语言均可)。
假设有编号为1,2,……,n的n个人围坐成一圈,约定从编号为k(n=k=1)的人开始报数,数到m的那个人出列,他的下一个人从1开始重新报数,数到m的那个人出列,依次类推,直到所有的人全部出列为止,由此产生一个出队编号的序列。
1、给定一个8个人的圈(n=8)6 2 7 4 3 5 1 8 。
实验步骤:
在“F:\DataStru\”目录下面创建自己以自己学号作为名字的文件夹。自己所有的实验程序均放在该文件夹下面。
创建项目,文件保存到第1步说的目录。
每台计算机的教材参考代码在“E:DataStru\”,先解压至“F:\DataStru\”。
通过“工具/选项/vc++目录/包含文件”把相应的F:\DataStru\”的代码包含进去,以便编程的时候,包含相关头文件,或参考测试程序。
弄懂教材参考代码中给出的线性表类(c++)或线性表结构体以及与之相关的函数(c);构造一个表,进行实验要求的课题。
实验二 栈
【实验目的】
掌握栈的LIFO(后进先出)特点和栈的存储结构;
2、熟悉栈的各种操作;
3、掌握栈的应用方法,理解栈的重要应用;
4、根据实验要求设计并完成程序,把理论的基本操作知识转化到实际的实践应用中。
【实验原理】
栈是一种特殊的线性表,这种线性表只能在固定的一端(称为栈顶(top))进行插入和删除操作。由于只允许在栈顶进行插入和删除操作,所以栈的操作是按照“后进先出”(Last In First Out,缩写为LIFO)原则进行的。本实验要求用栈作为基本的数据结构解决各实验课题。
【实验要求】(实验课题一必做,其他选做)
实验课题一: 将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)。转换函数的原型为:
void Convert (int n, char str[], unsigned P);
n:输入,待转换的数
str:输出,转换好的P进制字符串
P:输入,要转换的进制,取值可从2到16。如果在这范围之外,可认为输入错,不做转换。
将一个整数转换成P进制的数,我们可以采用如下的方法:
例:十进制转换成八
文档评论(0)