数据结构课程报告汉诺塔

数据结构课程报告汉诺塔

ID:18484964

大小:187.50 KB

页数:15页

时间:2018-09-18

数据结构课程报告汉诺塔_第1页
数据结构课程报告汉诺塔_第2页
数据结构课程报告汉诺塔_第3页
数据结构课程报告汉诺塔_第4页
数据结构课程报告汉诺塔_第5页
资源描述:

《数据结构课程报告汉诺塔》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、目录1课题需求32概要设计32.1递归32.2非递归43详细设计和实现44调试与测试134.1启动窗口134.2递归实现134.3非递归实现154.4退出165致谢176参考文献18152概要设计汉诺塔是一个经典的问题,曾被称为“世界末日问题”。此次程序设计全面讨论了解决此问题的方案,详细研究,了解,解决问题的算法设计,给出了具体算法,最后由手工输入测试数,运用递归与非递归算法得出结果。2.1递归若只有一个圆盘的话直接将圆盘移至C杆;若为N个圆盘的话将N-1个圆盘当作整体借助C杆移至B杆,将N号盘移至C杆,再借助A杆重复上面的操作即可将圆盘

2、移至C杆。2.2非递归看出二叉树实现,假设‘A’一开始有n个圆盘,前n-1个‘A’通过‘C’移到‘B’上看出左孩子,第n个移到‘C’看出根,将‘B’中n-1通过‘A’移到‘C’看成右孩子,建立完全二叉树。主要借助二叉树的非递归中序遍历方法实现,利用栈堆来实现。3详细设计和实现15DiGui.cpp文件:#include//递归法解决汉诺塔问题voidHanNuoTaDiGui(intn,chara,charb,charc){if(n<2){cout<<"圆盘"<

3、eturn;}HanNuoTaDiGui(n-1,a,c,b);//n-1个圆盘移到bcout<<"圆盘"<voidmunu(){cout<<"**************************************************"<

4、"<

5、#include//from指要转移的盘子的柱子,pass指经过的中间柱子,aim指目的盘子所在的柱子structTree//树结点{intn;charfrom;15charpass;charaim;//构造函数Tree(intm,chara,charb,charc){n=m;from=a;pass=b;aim=c;}Tree(){}//判断是否为空结点boolIsNullNode(){if(n<1)returntrue;returnfalse;}};//栈,用来存放盘子classStack{Tr

6、ee*data;inttop;intmaxSize;public:Stack(intsz);~Stack();15boolIsEmpty();//判断是否为空栈boolIsFull();//判断是否为满栈boolPush(Treex);//进栈boolPush(intm,chara,charb,charc);//进栈boolPop(Tree&x);//出栈boolGetTop(Tree&x);//取栈顶};Stack::Stack(intsz)//构造函数{maxSize=sz;data=newTree[maxSize];top=-1;}S

7、tack::~Stack()//析构函数{delete[]data;}//判断是否为空栈boolStack::IsEmpty(){if(top==-1)returntrue;returnfalse;}//判断是否为满栈15boolStack::IsFull(){if(top==maxSize-1)returntrue;returnfalse;}//出栈boolStack::Pop(Tree&x){if(IsEmpty())returnfalse;x=data[top--];returntrue;}boolStack::Push(Treex)

8、{if(IsFull())returnfalse;data[++top]=x;returntrue;}boolStack::Push(intm,chara,charb,charc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。