数据结构实验 第二单元 汉诺塔(非递归,用栈模拟递归)
2015-12-18 12:14
260 查看
/// <summary> /// 模拟 递归函数的调用堆栈 /// </summary> /// <param name="n"></param> 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)
相关文章推荐
- 数据结构实验 第二单元 括号匹配
- 数据结构实验 第二单元 括号匹配
- 数据结构实验 第二单元 栈操作
- 数据结构实验 第二单元 栈操作
- 数据结构之插入排序
- <LeetCode OJ> 8. String to Integer (atoi)
- 数据结构实验之查找六:顺序查找
- <LeetCode OJ> 148. Sort List
- 学期末数据结构教程总结
- 数据结构总结
- 数据结构实践——用哈希法组织关键字
- 数据结构实践——用哈希法组织关键字
- 本学期数据结构学习总结
- 数据结构实践——验证算法
- 数据结构期末总结
- 数据结构实践——是否二叉排序树?
- 第16周SHH数据结构-【项目1-验证算法(2)希尔排序】
- 数据结构实践——二叉树排序树中查找的路径
- 数据结构实践——(4)验证算法——平衡二叉树
- 数据结构实践——(3)验证算法——二叉排序树相关算法