用数据结构(c语言)编写汉诺塔程序
时间: 2023-07-27 20:16:34 浏览: 104
好的,下面是用 C 语言实现汉诺塔问题的代码:
```c
#include <stdio.h>
void hanoi(int n, char A, char B, char C); // 声明函数
int main() {
int n;
printf("请输入汉诺塔的层数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C'); // 调用函数
return 0;
}
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("%c -> %c\n", A, C); // 将 A 上的唯一盘子移动到 C 上
return;
}
hanoi(n-1, A, C, B); // 将前 n-1 个盘子从 A 移动到 B,以 C 为中转
printf("%c -> %c\n", A, C); // 将 A 上的第 n 个盘子移动到 C 上
hanoi(n-1, B, A, C); // 将前 n-1 个盘子从 B 移动到 C,以 A 为中转
}
```
在程序中,我们使用了递归的思想,将 n 层汉诺塔问题分解成了三个子问题:将前 n-1 个盘子从 A 移动到 B,以 C 为中转;将 A 上的第 n 个盘子移动到 C 上;将前 n-1 个盘子从 B 移动到 C,以 A 为中转。递归的终止条件是,当 n 等于 1 时,直接将 A 上的唯一盘子移动到 C 上即可。
运行程序,输入汉诺塔的层数,即可输出移动的步骤。
阅读全文