资源简介
用栈来实现汉诺塔,要明白递归就是栈的重要应用之一,递归是系统自动调用栈来处理。
代码片段和文件信息
/*
2013年10月18日16:03:22
用栈来实现汉诺塔
参考资料:http://www.nowamagic.net/librarys/veda/detail/2300
*/
#include
#include
#define MAXSIZE 100
#define INCREMENT 2
int i=0;
//定义栈结构
typedef struct
{
int * top; //栈顶指针
int * base; //栈底指针
int length; //栈的长度
}Stack;
void move(char a char b){
i++;
printf(“将%c柱最上面的盘子移动到%c柱上\n“ab);
}
void Push(Stack *pint nchar achar b char c){
if(p->top-p->base>=p->length){ //如果栈满,重新分配空间
printf(“栈满了,系统正在重新分配空间...\n“);
p->base=(int *)realloc(p->base(MAXSIZE+INCREMENT) * sizeof(int));
if(!p->base) //空间分配失败
exit(-1);
p->top = p->base+p->length;
p->length = p->length+INCREMENT;
}
//依次将盘子数量以及柱子的名词压入栈(入栈4个元素)
*(p->top) = n;
p->top++;
*(p->top) = a;
p->top++;
*(p->top) = b;
p->top++;
*(p->top) = c;
p->top++;
}
void Pop(Stack *p){
if(p->top==p->base){
printf(“栈空,不能出栈“);
}else{
//出栈4个元素
p->top-
- 上一篇:Newton-cotes公式(数值计算实验)
- 下一篇:智能电梯完整c程序
相关资源
- 停车场管理系 C语言实现停车场管理
- 状态空间法解决汉诺塔问题
- 后缀表达式求值
- c++ 栈应用 使用标准库函数 源代码 原
- 数据结构的顺序栈的逆置和合并
- 汉诺塔VC6.0可视化实现源码
- C语言 地图染色 非递归 源代码
- 递归和非递归解决迷宫问题
- 汉诺塔 win32 演示程序
- C语言栈和队列代码实现
- 用C++栈写的中缀表达式求解
- 数据结构栈、队列、二叉树、顺序查
- 算法题《武士巡逻》的C++代码
- 基于顺序表的学生信息管理系统.cpp
- 走迷宫算法
- 二叉树遍历
- c语言,二叉树,前中后,递归,非递
- 汉诺塔C语言源程序
- C语言课设---汉诺塔程序代码
- 用栈实现十进制转换成二进制(c语言
- c++用栈实现四则运算
- c++实现四则运算器源码 支持括号
- 栈实现中缀表达式到后缀表达式的转
- 表达式求值(C语言栈实现)
- c++栈操作实现,堆栈,出栈,取栈顶
- c语言实现中缀表达式转后缀并求值
- C语言:中缀算术表达式求值栈 附答案
- C语言课程设计-汉诺塔的演示
- 栈实现迷宫
- 数据结构 C语言 迷宫问题求解 栈
评论
共有 条评论