汉诺塔非递归实现 C语言版
我上一篇博客是汉诺塔C语言递归实现,非递归和递归想法一样。这里不再赘述,直接链接转到:
递归实现固然好理解,但是n的值越大,空间和时间上都是极大的消耗,最终可能导致程序直接崩溃。
在以后的做题或者是面试中,不推荐用递归方法做,所以要写出对应的非递归方法。
某次上课无意间听到老师说了这样一句话:任何递归法都可以用循环的方法进行非递归实现,然后回头找了找汉诺塔非递归的资料,整理整理,搞出了一个c实现的非递归方法
#include<stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct{
int N;
char A; //起始柱
char B; //借助柱
char C; //目标柱
}ElementType;
typedef struct {
ElementType Data[MaxSize];
int top;
}Stack;//汉诺塔问题的结构类型
void Push(Stack *PtrS, ElementType item){
//入栈操作
if (PtrS->top == MaxSize)
{
printf(&#