数据结构采用的 顺序队列
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
#define MAX 100
int num=0;
typedef struct stack {
int disc[MAX];
int top;
char flag;
}stack;
void move(stack &a,int n,stack & c, stack &b){
if(n==1){
printf("%c移动数据%d到%c\n",a.flag,a.disc[a.top],b.flag);
num++;
b.top++;
b.disc[b.top]=a.disc[a.top];
a.top--;
}
else{
move(a,n-1,b,c);
printf("%c移动数据%d到%c\n",a.flag,a.disc[a.top],b.flag);
num++;
b.top++;
b.disc[b.top]=a.disc[a.top];
a.top--;
move(c,n-1,a,b);
}
}
int main(int argc, char *argv[])
{
stack a;
a.top=4;
a.flag='A';
for(int i=1;i<=4;i++){
a.disc[i]=5-i;
}
stack b;
b.top=0;
b.flag='B';
stack c;
c.top=0;
c.flag='C';
move(a,4,c,b);
printf("一共移动了%d次\n",num);
for(int i=1;i<=4;i++){
printf("%d",b.disc[i]);
}
system("PAUSE");
return EXIT_SUCCESS;
}