• 大小: 53KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: 汉诺威塔  C  C++  

资源简介

汉诺威塔数据结构课程设计,用C语言做的,有程序源码,有文档

资源截图

代码片段和文件信息

/*hanoi.c*/
 #include 
 int count=0;  //定义全局变量count,计算移动的步数
 //////////////////////////////////////////////////////////
//函数名:move
//功能:打印出x-->y,也就是具体的移动方法,并且计算总的移动步数
//入口参数:x-代表第一个座
//        y-代表第二个座
//////////////////////////////////////////////////////////
void move(char xchar y)
{
        printf(“\t%c-->%c\n“xy);
        count++;
}
 //////////////////////////////////////////////////////////
//函数名:hanoi
//功能:将n个盘从one座借助于two座,移动到three座
//入口参数:n-代表总的盘数
//        one-代表第一个座
//        two-代表第二个座
//        three-代表第三个座
//////////////////////////////////////////////////////////
void hanoi(int nchar onechar twochar three)
{
        if(n==1)            //如果只有一个盘,直接从one到three
                move(onethree);
        else {              //如果有多个1个盘
                hanoi(n-1onethreetwo);//第一步:将n-1个盘从one借助three移到two
                move(onethree);//第二步:将第n个盘从one移到three
                hanoi(n-1twoonethree);//第三步:将n-1个盘从two借助one移到three
        }
}
 //////////////////////////////////////////////////////////
//函数名:main
//功能:总的控制,打印出移动方案和移动次数
//入口参数:无
//////////////////////////////////////////////////////////
int main()
{
        int m;
        printf(“Input the number of disks:“);
        scanf(“%d“&m);//输入盘的总数
        printf(“The step to moving %3d disks:\n\n“m);
        hanoi(m‘A‘‘B‘‘C‘);//打印出移动方案
        printf(“\nThe total times of moving are %d.\n“count);//打印出移动次数
        return(0);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1694  2010-12-11 21:27  汉诺威塔\1.cpp

    ..A..H.        10  2010-12-11 21:27  汉诺威塔\Desktop__.ini

     文件      48640  2010-12-11 21:27  汉诺威塔\李媛前三页.doc

     文件     134656  2010-12-11 21:27  汉诺威塔\课设报告主体李媛.doc

     目录          0  2010-12-11 21:33  汉诺威塔

----------- ---------  ---------- -----  ----

               185000                    5


评论

共有 条评论