汉罗塔非递归_汉诺塔递归原理

汉罗塔非递归_汉诺塔递归原理/*汉诺塔递归和非递归算法实现*/#includeusingnamespacestd;typedefstructTower{intheight;chara,b,c;}Tower;typedefstructNode{Towerelement;Node*pNext;}Node,*LinkList;typedefstruct

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

/*汉诺塔递归和非递归算法实现*/
#include <iostream>
using namespace std;
typedef struct Tower{
    int height;
    char a,b,c;
}Tower;
typedef struct Node{
    Tower element;
    Node* pNext;
}Node,*LinkList;
typedef struct  
{
    LinkList Top;
}Stack;
void InitStack(Stack& stack)
{
    stack.Top=(LinkList)malloc(sizeof(Node));
    stack.Top->pNext=NULL;
}
void DestroyStack(Stack& stack)
{
    free(stack.Top);
    stack.Top=NULL;
}
void Push(Stack& stack,int height,char a,char b,char c)
{
    LinkList temp=(LinkList)malloc(sizeof(Node));
    temp->element.height=height;
    temp->element.a=a;
    temp->element.b=b;
    temp->element.c=c;
    temp->pNext=stack.Top->pNext;
    stack.Top->pNext=temp;
}
Tower Pop(Stack& stack)
{
    LinkList temp=stack.Top->pNext;
    stack.Top->pNext=temp->pNext;
    Tower element=temp->element;
    free(temp);
    return element;
}
int EmptyStack(Stack stack)
{
    if (stack.Top->pNext==NULL)
    {
        return 1;
    } 
    else
    {
        return 0;
    }
}
void main()
{
    
    Stack stack;
    InitStack(stack);
    Push(stack,10,'A','B','C');
    while (!EmptyStack(stack))
    {
        Tower temp=Pop(stack);
        if (temp.height==1)
        {
            cout<<temp.a<<"-->"<<temp.c<<endl;
        }
        else
        {
            Push(stack,temp.height-1,temp.b,temp.a,temp.c);
            Push(stack,1,temp.a,temp.b,temp.c);
            Push(stack,temp.height-1,temp.a,temp.c,temp.b);
        }
    }
    DestroyStack(stack);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182941.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月12日 上午7:00
下一篇 2022年10月12日 上午7:00


相关推荐

  • Mask-RCNN 算法及其实现详解

    Mask-RCNN 算法及其实现详解写在前面 经过了 10 多天对 RCNN 家族的目标检测算法的探究 从一个小白到了入门阶段 觉得有必要记录下这些天学习的知识 如有理解的不到位的地方 还望各位大佬指教 文章代码量比较大 详细的看可能需要一段的时间 等毕设开题答辩完了之后有时间我再修改修改 望谅解 nbsp MASKRCNN 算法介绍 nbsp nbsp nbsp Mask RCNN 是何凯明大神继 Faster RCNN 后的又一力作 集成了物体检测和实例分

    2026年2月14日
    2
  • Oracle初学者-常用工具介绍

    Oracle初学者-常用工具介绍

    2021年8月16日
    54
  • 配置dovecot服务

    配置dovecot服务3 配置 dovecot 服务 问题沿用练习一 二 在已实现 Postfix 发信功能的基础之上 为了方便邮箱用户收取各自的电子邮件 需要进一步提供专门的收信服务 本案例要求采用 Dovecot 软件来实现 需要完成的配置任务如下 1 安装 dovecot 软件包 2 允许明文验证 指定 tedu cn 邮箱路径 3 启动 dovecot 服务 方案 步骤实现此案例需要按照如下步骤进行 步骤一 安

    2026年3月19日
    1
  • Linux重命名网卡名称

    Linux重命名网卡名称在 linux 中设置了两个网卡 配置完 ifcfg 文件后 便直接 servicenetwo 但是发现一重启就跳回自动分配的 IP 这是因为我直接在配置文件中修改了网卡名称而没修改配置 解决如下 1 先检查 ifcfg 文件中 BOOTPROTO 是否为 static ONBOOT 是否为 yes 都修改完成后如若还不行则进行下面操作 2 修改 etc sysconfig grub 文件 给 GRUB CMDLINE LINUX 参数中增加 net ifnames 0biosdevname 03 用命令 grub

    2026年3月17日
    2
  • 手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)

    手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)目录敲黑板啦 Linux 企业应用现状 重要性 选择性看 搭建 Linux 环境 Linux 环境的搭建方式 购买云服务器 进入正题 第一步 第二步 第三步 第四步 第五步 第六步 以后咋找 敲黑板啦作者新创立了一个 非科班转码的社区 期待科班的铁汁们来一起正确地引导我们这些非科班的友友们 更期待非科班转码的铁汁们来融入我们的大家庭 一起创办一线社区哈 https bbs csdn net f

    2026年3月20日
    2
  • st7789 旋转_ESP32驱动ST7789液晶屏

    让你的ESP32点亮一块ST7789液晶屏吧hello-world这块液晶屏尺寸是1.14寸,分辨率为135×240,驱动是ST7789。(不小心多买了一个并口版本,因为串口方式连接就能满足我的需求,所以并口屏幕吃灰预定了)序简单下介绍点亮这块屏幕的方法,介绍下如何配置参数并正确的显示内容。下载驱动库我使用的驱动库为TFT_eSPI接线如下:ESP32引脚名称液晶屏引脚名称3V3VCCGNDGND…

    2022年4月6日
    224

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号