数据结构实验报告汉诺塔

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告书

课程名:数据结构

题目:汉诺塔

班级:

学号:

姓名:

一、目的与要求

1)掌握栈与队列的数据类型描述及特点;

2)熟练掌握栈的顺序和链式存储存表示与基本算法的实现;

3)掌握队列的链式存储表示与基本操作算法实现;

4) 掌握栈与队列在实际问题中的应用和基本编程技巧;

4)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果);

5)认真书写实验报告,并按时提交。

二、实验内容或题目

汉诺塔问题。程序结果:给出程序执行过程中栈的变化过程与圆盘的搬动状态。

三、实验步骤与源程序

源程序:

/ *编译环境Visual C++6.0 */

#include "stdafx.h"

#include

#include

void move(int h,char c,char f)

{

printf("%d:%c--->%c\n",h,c,f);

}

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",&flag);

printf("\n");

switch(flag)

{

case 1:

printf("输入盘子的总数:");

int total;

scanf("%d",&total);

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 输入盘子总数

图2 移动步骤

图3 程序退出

五、结果分析与实验体会

在运行程序时要注意头文件的使用,掌握栈与队列的数据类型描述及特点,以及栈的顺序和链式存储存表示与基本算法的实现。

相关文档
最新文档