《数据结构》实验指导手册.doc

上传人:飞****9 文档编号:136408098 上传时间:2020-06-28 格式:DOC 页数:34 大小:367KB
返回 下载 相关 举报
《数据结构》实验指导手册.doc_第1页
第1页 / 共34页
《数据结构》实验指导手册.doc_第2页
第2页 / 共34页
《数据结构》实验指导手册.doc_第3页
第3页 / 共34页
《数据结构》实验指导手册.doc_第4页
第4页 / 共34页
《数据结构》实验指导手册.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《《数据结构》实验指导手册.doc》由会员分享,可在线阅读,更多相关《《数据结构》实验指导手册.doc(34页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验指导手册计算机教研室2008.61实验教学的目的:通过实验,加深对算法与数据结构基本知识的理解,掌握数据结构的理论和设计技术及其使用,培养学生数据结构的设计、开发能力。2实验教学的要求:学生每次实验前必须根据实验指导手册,设计出实验方案(程序和实验步骤);在实验过程中要求独立进行程序调试和排错,必须学会使用在线帮助解决实验中遇到的问题,必须应用理论知识分析问题、解决问题。3实验内容:实验1:VC6的使用一、实验目的理解和掌握如何使用Visual C6.0环境编写C/C程序。二、实验环境装有Visual C6.0的计算机。本次实验共计4学时。三、实验内容1、熟悉VC6环境掌握如何创建

2、控制台应用程序。掌握一些常用快捷键,例如编译F7,运行CtrlF5,调试运行F5,单步运行F10/F11,设置断点F9,格式化代码AltF8。2、掌握如何编译程序理解编译过程中的错误信息,并掌握如何排错。3、掌握如何调试程序掌握如何通过设置断点来单步调试程序,如何查看当前变量的值。4、实验题:完成实验教材的实验题1.1、1.2、1.3。要求:实现该实验结果。通过该实验题,熟悉VC6环境下的程序编写、编译、调试。实验2:顺序表基本运算一、实验目的(1)掌握顺序表的各种基本运算的实现。(2)能够利用基本运算进行顺序表的操作。二、实验环境装有Visual C6.0的计算机。本次实验共计2学时。三、实

3、验内容1、顺序表基本运算实现顺序表的各种基本运算;并在此基础上设计一个主程序,完成如下功能:(1) 初始化顺序表L(元素类型为char型)(2) 依次采用尾插法插入a, b, c, d, e元素(3) 输出顺序表L(4) 输出顺序表L的长度(5) 判断顺序表L是否为空(6) 输出顺序表L的第3个元素(7) 输出元素a 的位置(8) 在第4个元素位置上插入f元素(9) 输出顺序表L(10) 删除顺序表L的第3个元素(11) 输出顺序表(12) 释放顺序表提示:可以参考上课教材、实验教材的实验题2.1。2、顺序表的应用(选做)(1)设计通讯录(也可为其他应用)文件的存储格式和线性表的顺序存储结构(

4、2)设计在通讯录(也可为其他应用)中添加、删除、查找某个节点信息程序(3)调试程序实验3:单链表基本运算一、实验目的(1)掌握链表的概念;掌握单链表的各种基本运算的实现。(2)能够利用基本运算进行单链表的操作。(3)加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计2学时。三、实验内容实现单链表的各种基本运算;并在此基础上设计一个主程序,完成如下功能:(1)初始化单链表L(2)依次采用尾插法插入a, b, c, d, e元素(3)输出单链表L(4)输出单链表L的长度(5)判断单链表L是否为空(6)输出单链表L的第3个元素(

5、7)输出元素a 的位置(8)在第4个元素位置上插入f元素(9)输出单链表L(10)删除单链表L的第3个元素(11)输出单链表L(12)释放单链表L提示:可以参考上课教材、实验教材的实验题2.2。实验4:单链表综合实验一、实验目的(1)能够利用单链表的基本运算进行单链表的相关操作。(2)掌握文件的应用(3)加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计4学时。三、实验内容1、通讯录设计设计一个班级同学的通讯录,要求如下: 通讯录中每个同学的信息包含以下内容:学号(id)、姓名(name)、电话号码(tel)。如果需要更多

6、其他信息,请自行添加。 程序主菜单包含以下几个功能:(1) 添加记录:通过键盘输入信息,添加一条通讯录记录。(2) 删除记录:通过键盘输入学号,删除该学号的记录。(3) 输出记录:输出通讯录全部记录。(4) 按姓名查找:通过键盘输入姓名,输出该同学的所有信息。(5) 保存记录:把通讯录中所有的记录保存到文件中。(6) 清空记录:删除通讯录中的全部记录,并删除文件。(7) 退出提示: 程序启动时应判断是否存在记录文件,如果存在,则读取每条记录到链表中。 用户选择并完成主菜单某功能后,除了退出程序,应该返回主菜单。 添加一条记录时,插入到链表的尾部。 查找、删除记录时,如果该记录不存在,则应该输出

7、不存在的提示。 添加记录、删除记录时不需要写文件。 保存记录时,用覆盖写文件的方法。(或者先删除原文件,再保存全部记录信息) 各个功能模块写成函数,由主函数调用。选做: 主菜单增加一个排序功能选项,可以按照学号从小到大进行排序。排序方法可以用冒泡排序或者插入排序。实验5:链栈的基本操作一、实验目的1)熟悉栈的定义和栈的基本操作。2)掌握链式存储栈的基本运算。3)加深对栈数据结构的理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计2学时。三、实验内容必做内容: 链栈的基本操作编写栈的基本操作函数1 栈类型的定义,数据域使用char型typedef

8、char ElemType;typedef struct node ElemType data; struct node *next; LinkStack;2初始化空栈:函数原型如下: void InitLinkStack( LinkStack * & s)其中函数参数为LinkStack * & 类型,表示指向创建的空栈的指针,并且用引用方式传入。3. 判断是否空栈:函数原型如下:int IsEmptyLinkStack(LinkStack *s ) 其中函数参数为栈指针;返回值为int型,1表示是空栈,0表示不是空栈。4. 入栈:函数原型如下:void PushLinkStack(Link

9、Stack* &s , ElemType x) 其中函数参数s为栈指针,x为入栈的数据。 5. 出栈:函数原型如下:int PopLinkStack (LinkStack* & s, ElemType &x)其中函数参数s为栈指针,x为出栈的数据的引用;返回值为int型,1表示出栈成功,0表示出栈失败。6取栈顶元素:(栈保持不变)函数原型如下:int GetLinkStackTop (LinkStack* s, ElemType &x)其中函数参数s为栈指针,x存放栈顶元素值;返回值为int型,1表示成功,0表示失败。编写主函数调用上述函数实现下列操作。1初始化空栈。2. 键盘输入字符,使得输

10、入的字符依次入栈(结束符号自定,例如回车键(值为10)或#) 每插入一个元素,必须输出当时的栈顶元素(调用GetLinkStackTop函数)。 3判断链栈是否为空。输出判断结果。4调用出栈函数,打印出栈元素的值;反复此步骤,直至栈为空。5判断链栈是否为空。输出判断结果。6释放链栈。选做内容(一):判断对称字符串设计一个算法,调用栈的基本运算,判断一个字符串是否为对称字符串。若是返回1;否则返回0。例如:“abcba”和“abba”都是对称字符串。实验6:队列的基本操作一、实验目的1)熟悉队列的定义和队列的基本操作。2)掌握顺序循环队列和链式存储队列的基本运算。3)加深对队列数据结构的理解,逐

11、步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计2学时。三、实验内容队列的基本操作队列的存储结构从顺序循环队列或者链队任选一种。编写一个程序,实现队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1) 初始化队列q(2) 判断q是否非空(3) 依次进队元素a,b,c(4) 出队一个元素,输出该元素(5) 输出队列q的元素个数(6) 依次进队列元素d,e,f(7) 输出队列q的元素个数(8) 输出出队序列(9) 释放队列实验7:栈和队列综合实验一、实验目的(1)能够利用栈和队列的基本运算进行相关操作。(2)进一步熟悉文件的应用(3)加深队列

12、和栈的数据结构理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计4学时。三、实验内容以下两个实验任选一个。1、 迷宫求解设计一个迷宫求解程序,要求如下: 以M N表示长方阵表示迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 能任意设定的迷宫 (选作)如果有通路,列出所有通路提示: 以一个二维数组来表示迷宫,0和1分别表示迷宫中的通路和障碍,如下图迷宫数据为:1111111111100100010110010001011000011001101110000110001000011010001001101110110111000000011

13、111111111入口位置:1 1出口位置:8 8 探索过程可采用如下算法,设定当前位置的初值为入口位置;do 若当前位置可通,则将当前位置插入栈顶;若该位置是出口位置,则结束;否则切换当前位置的东邻方块为新的当前位置; 否则, 若栈不空且栈顶位置尚有其他方向未经探索,则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;若栈不空但栈顶位置的四周均不可通,则删去栈顶位置;/从路径中删去该通道块若栈不空,则重新测试新的栈顶位置,直至找到一个可通的相邻块出栈至栈空;while (栈不空);2、机场飞机起降的过程模拟熟悉队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: 模拟一个机场飞机起降的过程 机场仅有一条跑道,要求起飞与降落不能同时进行 进场飞机若暂时没有跑道可用须在空中盘旋等候 离场飞机若暂时没有跑道可用须在地面排队等候 仅当空中无飞机等待降落时地面飞机方可起飞 飞机的申请进场、降落、申请离场和起飞分别视为独立事件 每个事件的发生占用一个时间单位。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号