| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:非递归汉洛塔求助
只看楼主 加入收藏
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
结帖率:69.23%
收藏
已结贴  问题点数:10 回复次数:4 
非递归汉洛塔求助
为什么盘子数超过了2个以后就会直接闪掉啊!
程序代码:
#include <stdio.h>
#include <malloc.h>
typedef struct list
{
        int n;
        char x;
        char y;
        char z;
}LIST;
typedef struct zhan
{
        LIST* top;
        LIST* base;
}ZHAN;
void init(ZHAN*l)
{
     l->base=(LIST*)malloc(sizeof(LIST)*1000);
     l->base=l->top;
}
void push(ZHAN*l,int n,char x,char y,char z)
{
     l->top->n = n;
     l->top->x = x;
     l->top->y = y;
     l->top->z = z;
     l->top++;
   
}
int pop(ZHAN*S,LIST*e)
{
    if(S->base==S->top)
    {
                       return -1;
    }
    else
    {
        S->top--;
        e->n = S->top->n;
        e->x = S->top->x;
        e->y = S->top->y;
        e->z = S->top->z;
        return 1;
    }
}
void move(char a,char c)
{
     printf("将%c盘子移动到%c盘子\n",a,c);
}
void hanluota(int n,char x,char y,char z)
{
     ZHAN l;
     init(&l);
     LIST p;
     push(&l,n,x,y,z);
     while (1==pop(&l,&p))
     {
                    if(p.n==1)
                    {
                               move(p.x,p.z);
                    }
                    else
                    {
                        push(&l,p.n-1,p.y,p.x,p.z);
                        push(&l,1     ,p.x,p.y,p.z);
                        push(&l,p.n-1,p.x,p.z,p.y);
                    }
     }           
}

int main(void)
{
    int i;
    printf("请输入盘子的个数");
    scanf("%d",&i);
    hanluota(i,'x','y','z');
   
    getchar();
    getchar();
    return 0;
}
2011-08-20 16:26
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
收藏
得分:0 
求高手解答哦
2011-08-20 17:29
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
递归的我都还没弄清楚。

My life is brilliant
2011-08-20 19:18
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:5 
一处错误:
图片附件: 游客没有浏览图片的权限,请 登录注册

A real warrior never quits.
2011-08-20 21:21
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
收藏
得分:0 
谢谢楼上的 哦!下次一定小心L!
2011-08-22 09:23
快速回复:非递归汉洛塔求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032195 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved