[討論] 使用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