参照递归代码改编 SETYPE为栈元素{int n,//金片数量 char x,y,z}柱子名称 栈功能代码和输出代码不贴出初学者 使用纯C代码void
Hanoi(SETYPE x) { STACK s; charc; inti = 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代码实现汉诺塔问题的栈式解决方案,利用递归和栈操作解决经典的数学问题,提供了一种理解和实践数据结构与算法的有效方法。
1068

被折叠的 条评论
为什么被折叠?



