首页 汉诺塔栈c语言

汉诺塔栈c语言

举报
开通vip

汉诺塔栈c语言汉诺塔栈c语言 计算机科学与工程学院 《算法与数据结构》试验报告[二] 专业班级 10级计算机工程02 试验地点 计算机大楼计工教研室 学生学号 1005080222 指导教师 蔡琼 学生姓名 肖宇博 试验时间 2012-4-14 试验项目 算法与数据结构 试验类别 基础性() 设计性() 综合性(?) 其它( ) (1)掌握栈的特点及其存储方法; 试 (2)掌握栈的常见算法以及程序实现; 验 (3)了解递归的工作过程。 目 的 及 要 求 成 绩 评 定 表 类 别 评 分 标 准 分值 得分 合...

汉诺塔栈c语言
汉诺塔栈c语言 计算机科学与 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 《算法与数据结构》试验报告[二] 专业班级 10级计算机工程02 试验地点 计算机大楼计工教研室 学生学号 1005080222 指导教师 蔡琼 学生姓名 肖宇博 试验时间 2012-4-14 试验项目 算法与数据结构 试验类别 基础性() 设计性() 综合性(?) 其它( ) (1)掌握栈的特点及其存储 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ; 试 (2)掌握栈的常见算法以及程序实现; 验 (3)了解递归的工作过程。 目 的 及 要 求 成 绩 评 定 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 类 别 评 分 标 准 分值 得分 合 计 积极出勤、遵守纪律 上机表现 30分 主动完成设计任务 程序代码 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 、功能正确 程序与报告 70分 报告详实完整、体现收获 备注: 评阅教师: 日 期: 年 月 日 计算机科学与工程学院 试 验 内 容 一、实验目的和要求 1、实验目的: (1)掌握栈的特点及其存储方法; (2)掌握栈的常见算法以及程序实现; (3)了解递归的工作过程。 2、实验内容 Hanoi塔问题。(要求4个盘子移动,输出中间结果) 3、实验要求: 要求实现4个盘子的移动,用递归和栈实现。 二、设计分析 三个盘子Hanoi求解示意图如下: C BCBA A A A A A (a(b) A BCBA ) C A A A A (c(d) ) 三个盘子汉诺塔算法的运行轨迹: 递归第三层 递归第二层 Hanio(1,A,B,C) Hanio(2,A,C,B) ? Move (A,C) 递归第一层 ? Hanio(1,A,B,C) ? Hanio(3,A,B,C) Move (A,B) ? Hanio(1,C,A,B) Hanio(1,C,A,B) Hanio(2,A,C,B) ? ? Move (C,B) ? Hanio(3,A,B,C) Hanio(1,B,C,A) Hanio(2,B,A,C) Move (A,B) ? ? Move (B,A) Hanio(1,B,C,A) ? ? Move (B,C) ? Hanio(2,B,A,C) Hanio(1,A,B,C) Hanio(1,A,B,C) ? Move (A,C) ? 2 《算法与数据结构》试验报告 计算机科学与工程学院 三、源代码 #include #include #define maxsize 20 typedef int datatype; //数据结构的类型 typedef struct { int top; datatype data[maxsize]; char flat; }sqstack; //栈的定义 void inisqstack(sqstack *&s,char ch) //初始化函数~ { s=(sqstack *)malloc(sizeof(sqstack)); s->top=-1; s->flat=ch; } void push(sqstack *&s,datatype e) //进栈函数 { s->top++; 3 《算法与数据结构》试验报告 计算机科学与工程学院 s->data[s->top]=e; } void pop(sqstack *&s,datatype &e) //出栈函数 { e=s->data[s->top]; s->top--; } void Dispstack(sqstack *s) //显示函数 { for(int i=s->top;i>=0;i--) { printf("%d\t",s->data[i]); } printf("\n"); } void Hanio(int n,sqstack *A,sqstack *B,sqstack *C) //汉诺塔 主程序 4 《算法与数据结构》试验报告 计算机科学与工程学院 { int e1; if(n==1) { printf("把%c的%d号盘移到到%c\n",A->flat,A->data[A->top],C->flat); pop(A,e1); push(C,e1); printf("-----%c还剩下-------------",A->flat); if(A->top==-1) { printf("0"); printf("\n"); } else Dispstack(A); printf("-----%c还剩下-------------",B->flat); if(B->top==-1) { printf("0"); printf("\n"); } 5 《算法与数据结构》试验报告 计算机科学与工程学院 else Dispstack(B); printf("-----%c还剩下-------------",C->flat); if(C->top==-1) { printf("0"); printf("\n"); } else Dispstack(C); } else { Hanio(n-1,A,C,B); pop(A,e1); push(C,e1); printf("把%c的%d号盘移到到%c\n",A->flat,e1,C->flat); Hanio(n-1,B,A,C); 6 《算法与数据结构》试验报告 计算机科学与工程学院 } } void main() { sqstack *A,*B,*C; int m; inisqstack(A,'A'); inisqstack(B,'B'); inisqstack(C,'C'); printf("输入几个盘子"); scanf("%d",&m); for(int i=m;i>0;i--) { push(A,i); } Hanio(m,A,B,C); } 7 《算法与数据结构》试验报告 计算机科学与工程学院 四、测试用例(尽量覆盖所有分支) 1. 正常状态下,输入1无错误后的运行程序如下: 2. 正常状态下,输入2无错误后的运行程序如下: 8 《算法与数据结构》试验报告 计算机科学与工程学院 3.正常状态下,输入3无错误后的运行程序如下: 9 《算法与数据结构》试验报告 计算机科学与工程学院 4(正常状态下,输入4无错误后的运行程序如下: 10 《算法与数据结构》试验报告 计算机科学与工程学院 五、实验 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 本次进行的是汉诺塔递归实现问题,由于是要用到递归和栈那么难度加大了很多。 递归的过程中关于程序执行到那里的问题是困扰我的大问题,并且递归完成后程序到了那里也是一个大问题~ 原来的版本我写了一个很麻烦的程序,它可以将移走的盘的名字都打印出来,并且可以随时看到每个柱子中剩下的盘子,但是这个程序在递归中除了很奇怪的问题,我花了很大的劲都没有改出来,所以才不得不写了这样的一个简单版本。该程序贯彻了我一贯的风格,将用户会出现的错误都考虑在内。并且提供了每次输出的结果~ 然而程序并不是最完美的。在今后的实验当中我将会更加的关注递归算法~ 11 《算法与数据结构》试验报告 计算机科学与工程学院 12 《算法与数据结构》试验报告
本文档为【汉诺塔栈c语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594905
暂无简介~
格式:doc
大小:85KB
软件:Word
页数:9
分类:互联网
上传时间:2017-11-30
浏览量:77