HANOI栈算法求助

stecdeng 2006-10-24 12:53:28
#include <stdio.h>
#include <stdlib.h>
#define N 100
/***********************************************/
typedef struct stack_rec
{
int n[N];
int m[N];
char a[N];
char b[N];
char c[N];
int top;
}DEFE;

DEFE s;
/**************************************/
void push(int n,int m,char a,char b,char c)
{
if ((s).top>=N-1)
printf("stack overflow");
else
{
s.top=s.top+1;
s.n[s.top]=n;
s.m[s.top]=m;
s.a[s.top]=a;
s.b[s.top]=b;
s.c[s.top]=c;
}
}
/**********************************************/
void pop(int n,int m,char a,char b,char c)
{
if((s).top<=-1)
printf("stack underflow");
else
{
n=(s).n[(s).top];
m=(s).m[(s).top];
a=(s).a[(s).top];
b=(s).b[(s).top];
c=(s).c[(s).top];
(s).top=s.top-1;
}
}
/**********************************************************/
void hanoi(int n,int m,char a,char b,char c)
{
push (n,m,a,b,c);
while(s.top!=-1)
{
pop(n,m,a,b,c);
if(m<=1)
printf("(%d):%c->%c\n",n,a,c);
else
{
push(n-1,n-1,a,c,b);
push(n,1,a,b,a);
push(n-1,n-1,b,a,c);
}
}
}
/*************************************************************/



int main(int argc, char *argv[])
{
s.top=-1;
hanoi(3,3,'a','b','c');

system("PAUSE");
return 0;
}
运行有问题 求助
...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stecdeng 2006-10-25
  • 打赏
  • 举报
回复
void pop(int &n,int &m,char &a,char &b,char &c)
写错了
nicholasfor 2006-10-25
  • 打赏
  • 举报
回复
pop是想pop出点东西吗?根本没有返回值。
stecdeng 2006-10-24
  • 打赏
  • 举报
回复
谢谢了 主要想看看我这程序有什么问题
飞哥 2006-10-24
  • 打赏
  • 举报
回复
汉诺塔非递归算法
http://amq.1314bloger.com/archives/30759/
STL:
http://blog.csdn.net/shaohui/archive/2006/04/12/660018.aspx

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧