博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实验 第二单元 汉诺塔(非递归,用栈模拟递归)
阅读量:6499 次
发布时间:2019-06-24

本文共 1396 字,大约阅读时间需要 4 分钟。

///         /// 模拟 递归函数的调用堆栈        ///         ///         private void GoHonoi(int n)        {            Step sp = new Step(n,'A','B','C');            //用栈来模拟系统的 递归调用栈            LinkStack ls = new LinkStack();            int count = 0;            //相当于调用 Honoi(n,'A','B','C');            ls.Push(sp);            while(!ls.Empty())            {                Step topStep = (Step)ls.Top();                while (topStep.n > 1)                {                    //将 Honoi(n-1...)压栈                    ls.Push(new Step(topStep.n-1,topStep.A,topStep.C,topStep.B));                    topStep = (Step)ls.Top();                }                //至此,honoi(n..) 的 递归函数均入栈                if (topStep.n == 1)                {                    textBox3.AppendText(string.Format("{3}:移动 {2} 盘, {0} 到 {1}\n", topStep.A, topStep.C,1,++count));                    ls.Pop();                    topStep = (Step)ls.Top();                }                //如果栈不为空                if (!ls.Empty())                {                    textBox3.AppendText(string.Format("{3}:移动 {2} 盘, {0} 到 {1}\n", topStep.A, topStep.C, topStep.n, ++count));                    ls.Pop();                    ls.Push(new Step(topStep.n - 1, topStep.B , topStep.A, topStep.C));                    topStep = (Step)ls.Top();                }            }        }

第一次调用GoHonoi(n)

转载于:https://www.cnblogs.com/tinyjian/p/6550709.html

你可能感兴趣的文章
web架构之mysql服务器
查看>>
你必须了解的微服务架构设计的10个要点!
查看>>
零基础学习Python需要注意的几个点,Python培训机构排名
查看>>
HDFS的shell和API操作
查看>>
MyEclipse教程:Web开发——创建Web片段项目
查看>>
如何编辑PDF文件,PDF编辑器如何使用
查看>>
程序员笔记|如何编写优雅的Dockerfile
查看>>
再看C
查看>>
匹配ip等的正则式
查看>>
CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法
查看>>
ORACLE RAC 更改instance name完整步骤
查看>>
【Cocos2d开发】Cocos2d下安卓环境的搭建
查看>>
vsftpd用户配置 No.2
查看>>
Ovirt 安装部署方法
查看>>
shell
查看>>
Linux时间同步
查看>>
毕业后五年之内将决定你的一生
查看>>
我的友情链接
查看>>
用python操作mysql数据库(之“更新”操作)
查看>>
快速排序(二)最后修改
查看>>