漢諾塔非遞迴棧程式碼
參照遞迴程式碼改編 SETYPE為棧元素{int n,//金片數量 char x,y,z}柱子名稱 棧功能程式碼和輸出程式碼不貼出
初學者 使用純C程式碼void
Hanoi(SETYPE x)
{
STACK s;
char
c;
int
i = 0 , n =
pow
(2, x.n) - 1;
AStackCreate(&s);
do
{
if
(x.n == 1)
{
Output(x);
i ++;
if
(!AStackIsEmpty(&s))
{
AStackPop(&s, &x);
Output(x);
i ++;
x.n -= 1;
c = x.y;
x.y = x.x;
x.x = c;
}
}
else
{
while
(x.n != 1)
{
AStackPush(&s, x);
x.n -= 1;
c = x.y;
x.y = x.z;
x.z = c;
}
}
}
while
(!AStackIsEmpty(&s) || x.n != 1);
Output(x);
printf
(
"%d\n"
, i);
AStackDestroy(&s);
}
相關文章
- 漢諾塔非遞迴演算法遞迴演算法
- 漢諾塔和遞迴遞迴
- 經典遞迴解決漢諾塔!遞迴
- 遞迴實現漢諾塔問題遞迴
- c++遞迴與迭代實現漢諾塔C++遞迴
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- 從漢諾塔遊戲理解python遞迴函式遊戲Python遞迴函式
- python3:遞迴解漢諾塔問題Python遞迴
- C#中漢諾塔問題的遞迴解法C#遞迴
- 化繁為簡 經典的漢諾塔遞迴問題 in Java遞迴Java
- 【YbtOJ高效進階 遞推-2】奇怪漢諾塔
- SQL 漢諾塔SQL
- 快速排序【遞迴】【非遞迴】排序遞迴
- 遞迴轉非遞迴 棧模擬 Recursive to Non-recursive stack simulated 總結遞迴
- 第二章 :查詢與排序-------遞迴經典問題——漢諾塔問題排序遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- js解決漢諾塔問題程式碼例項JS
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- 用棧+回溯+非遞迴解決N皇后問題遞迴
- 漢諾塔詳解
- 漢諾塔-PythonPython
- ACM 漢諾塔(三)ACM
- js漢諾塔問題解決方法程式碼例項JS
- 樹3-二叉樹非遞迴遍歷(棧)二叉樹遞迴
- 棧Stack——遞迴替身?遞迴
- 棧實現遞迴遞迴
- 五大演算法程式碼模板(DFS 遞迴非遞迴都算上,是六個)演算法遞迴
- 漢諾塔的實現
- 漢諾塔通項公式公式
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- JAVA漢諾塔遞迴 之SpringCloud企業分散式微服務雲架構快速開發平臺Java遞迴SpringGCCloud分散式微服務架構
- 百練OJ:4147:漢諾塔問題(Hanoi)——python實現漢諾塔Python
- 奇怪的漢諾塔 - 題解
- 小知識系列(3):Hanoi塔(漢諾塔,河內塔)
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 漢諾塔遊戲《演算法很美》遊戲演算法
- hanoi漢諾塔C++實現C++
- 漢諾塔演算法演示1.0演算法