用c语言做的,其中a,b,c是用栈实现的 /** 河内塔 */ #include<iostream> #define MAXLEN 5 using namespace std; typedef struct stack{ //结构 int data[MAXLEN]; int top = 0; }listStack; int stackPop(listStack &a){ //出栈 a.top--; return a.data[a.top+1]; } void stackPush(listStack &a, int x){ //入栈 a.top++; a.data[a.top] = x; } void move(listStack &a, listStack &c){ int x = stackPop(a); stackPush(c, x); } void Hanio(listStack &x, listStack &y, listStack &z, int n){ //移动 if(n >= 1){ Hanio(x, z, y, n-1); //a移到b move(x, z); Hanio(y, x, z, n-1); //b移到c } } int main(){ listStack a, b, c; int d[5] = {0, 1, 2, 3, 4}; for(int j = 1; j <= 4; j++){ a.data[j] = d[j]; a.top++; } Hanio(a, b, c, a.top); for(int j = 1; j <= 4; j++){ printf("%d\n", c.data[j]); } printf("Over!"); return 0; }