[讨论] 使用C语言做Hanoi Tower

楼主: fmtshk (fmtshk)   2020-05-09 19:12:52
https://ideone.com/B7uwPt ←(我的程式码)
我想写的功能:先输入一个数,用来当成河内塔的圆盘数量
然后程式会output出,把所有圆盘 从A塔 移动到 C塔 的步骤
并且每个步骤要印出ABC塔目前的情况,如下图范例
https://i.imgur.com/bTHcqEi.png
我的想法是做三个堆叠
然后用三个top指标指著
每次移动就pop某个塔最上层的圆盘,再push到另一个塔
但写完之后似乎有点怪怪的,试了一下2个圆盘
https://i.imgur.com/uLhBBOq.png
中间那一步不会动...
问题好像是,pop跟push函数中的"top++"和"top
作者: Lipraxde (Lipraxde)   2020-05-09 21:11:00
它有动啊,不过动的不是你想像的那个用 int * 修改 stack 上的 int,那修改 stack pointer(int *) 该用啥?别忘了 pointer type 也是种 type
作者: wa007123456 (大笨羊)   2020-05-10 18:11:00
其实用不到堆叠 你把to和mid交换即可hanoi(n-1, from, to, mid); 如果这是第一个递回

Links booklink

Contact Us: admin [ a t ] ucptt.com