《数据结构学习与实验指导》3-2:汉诺塔的非递归实现
来源:互联网 发布:易语言验证码识别源码 编辑:程序博客网 时间:2024/06/06 01:16
实验内容:借助堆栈以非递归方式求解汉诺塔问题,即将n个盘子从起始柱通过借助柱移动到目标柱,并保证每个移动符合汉诺塔问题要求。
输入说明:输入为一个正整数n,即起始柱上的盘数。
输出说明:每个操作占一行,按“柱1 -> 柱2“的格式输出。
测试用例:
输入 | 输出
1 | a -> c
2 | a -> b
a -> c
b ->c
3 | a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c
#include <stdio.h>#include <stdlib.h>typedef struct Node { int n; char from; char pass; char to; struct Node *previous;} *PNode;typedef struct { PNode top;} *PStack;PStack init();PNode pop(PStack stack);void push(PStack stack, int n, char from, char pass, char to);int main() { int N; scanf("%d", &N); PStack stack = init(); push(stack, N, 'a', 'b', 'c'); while (stack->top != NULL) { PNode node = pop(stack); if (node->n == 1) { printf("%c -> %c\n", node->from, node->to); } else { push(stack, node->n - 1, 'b', 'a', 'c'); push(stack, 1, 'a', 'b', 'c'); push(stack, node->n - 1, 'a', 'c', 'b'); } } printf("%d\n", count);}PStack init() { PStack stack = (PStack) malloc(sizeof(PStack)); stack->top = NULL; return stack;}PNode pop(PStack stack) { PNode top = stack->top; if (top == NULL) { return NULL; } PNode p = top; stack->top = p->previous; return p;}void push(PStack stack, int n, char from, char pass, char to) { PNode node = (PNode) malloc(sizeof(PNode)); node->n = n; node->from = from; node->pass = pass; node->to = to; node->previous = stack->top; stack->top = node;}
阅读全文
0 0
- 《数据结构学习与实验指导》3-2:汉诺塔的非递归实现
- <数据结构学习与实验指导>3-1一元多项式求导/3-2汉诺塔的非递归实现
- 数据结构 汉诺塔 递归与非递归的实现
- 《数据结构学习与实验指导》3-1:一元多项式求导
- 《数据结构学习与实验指导》3-6:表达式转换
- 《数据结构学习与实验指导》3-8:堆栈模拟队列
- 《数据结构学习与实验指导》4-3:朋友圈
- 《数据结构学习与实验指导》5-3:电话聊天狂人
- <数据结构学习与实验指导>2-1:简单计算器
- 《数据结构学习与实验指导》2-1:简单计算器
- 《数据结构学习与实验指导》2-6:数列求和
- 《数据结构学习与实验指导》2-7:素因子分解
- 《数据结构学习与实验指导》2-9:装箱问题模拟
- 《数据结构学习与实验指导》2-10:海盗分赃
- 《数据结构学习与实验指导》4-2:树种统计
- C语言数据结构实现二叉树递归与非递归遍历(数据结构第四次实验)
- 《数据结构学习与实验指导》3-4:一元多项式的乘法与加法运算
- 数据结构与算法学习记录--二叉树的创建,递归遍历,非递归遍历的实现
- Unity3D应用嵌入WPF应用并实现通信之进阶篇
- 内存优化大全(转载)
- C++面试常见问题总结(不断更新中......)
- ThinkPHP错误日志记录
- android自动化测试工具【UiAutomator】——UiObject
- 《数据结构学习与实验指导》3-2:汉诺塔的非递归实现
- 基于NIO的消息路由的实现(六)报文队列的处理
- 通用产品需求文档模板
- 如何爬虫推特数据
- 特殊进程之孤儿进程
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- MongoDB复制集简单操作
- Kerberos原理--经典对话
- IntelliJ IDEA 2017版本的下载+破解