• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: C/C++
  • 标签: 汉诺塔  非递归    

资源简介

用栈来实现汉诺塔,要明白递归就是栈的重要应用之一,递归是系统自动调用栈来处理。

资源截图

代码片段和文件信息

/*
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-

评论

共有 条评论