实验报告书
课程名: 数据结构
题 目: 汉诺塔 班 级:
学 号: 姓 名:
评语: 成绩: 指导教师: 批阅时间: 年 月 日 《 数据结构 》实验报告 - 1 -
一、目的与要求
1)掌握栈与队列的数据类型描述及特点;
2)熟练掌握栈的顺序和链式存储存表示与基本算法的实现; 3)掌握队列的链式存储表示与基本操作算法实现; 4) 掌握栈与队列在实际问题中的应用和基本编程技巧;
4)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果); 5)认真书写实验报告,并按时提交。
二、实验内容或题目
汉诺塔问题。程序结果:给出程序执行过程中栈的变化过程与圆盘的搬动状态。
三、实验步骤与源程序
源程序:
/ *编译环境Visual C++6.0 */ #include \"stdafx.h\" #include void move(int h,char c,char f) { printf(\"%d:%c--->%c\\n\} void hanoi(int n,char x,char y,char z) { if(n==1) move(1,x,z); else { hanoi(n-1,x,z,y); move(n,x,z); hanoi(n-1,y,x,z); } } void main(void) { int flag; do { printf(\" 汉诺塔问题\\n\\n\"); printf(\"[1] 开始\\n\"); printf(\"[2] 退出\\n\"); printf(\"1--2请选择:\"); scanf(\"%d\ printf(\"\\n\"); switch(flag) { case 1: 《 数据结构 》实验报告 - 2 - } printf(\"输入盘子的总数:\"); int total; scanf(\"%d\ printf(\"移动步骤:\\n\"); hanoi(total,'A','B','C'); break; case 2: printf(\"确认退出吗!Y/N:\"); char temp; cin>>temp; if(temp=='Y'||temp=='y') { flag=3; printf(\"谢谢使用!\\n\\n\"); } break; default: printf(\"您的选择超出范围,1--2请选择!\\n\"); } printf(\"\\n\\n\\n\"); }while(flag!=3); 四、测试数据与实验结果 图1 输入盘子总数 《 数据结构 》实验报告 - 3 - 图2 移动步骤 《 数据结构 》实验报告 - 4 - 图3 程序退出 五、结果分析与实验体会 在运行程序时要注意头文件的使用,掌握栈与队列的数据类型描述及特点,以及栈的顺序和链式存储存表示与基本算法的实现。 因篇幅问题不能全部显示,请点此查看更多更全内容