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

汉罗塔非递归_汉诺塔递归原理/*汉诺塔递归和非递归算法实现*/#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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaAPI学习-入门

    JavaAPI学习-入门1、JavaAPI概述API(ApplicationProgramingInterface):应用程序编程接口,是java提供的一些预定义的函数。目的:基于API实现程序的快速编写。只需了解实现的作用,无需关注源代码。JavaAPI通常是一些基础、通用的基础类库,通过这些基础的类库,可以构造复杂的功能。JavaAPI在线文档:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh1.1、如何学习针对一个API首先看概述,了解类的作用,然后看

    2022年7月8日
  • 图书销售管理系统概要设计,系统数据结构设计分工

    图书销售管理系统概要设计,系统数据结构设计分工完成人:千城墨白(20160401095)无法无天(20160401115)系统数据结构设计1、逻辑结构设计要点2、物理结构设计要点(1)系统所用到所有数据均存在服务器端,存于SQLServer服务器中;(2)系统界面的显示属性,如字体属性,样式等使用CSS统一界面;(3)系统界面中使用的相关图片需要保存在服务…

    2022年5月13日
  • android 常用加密,分享一下Android各种类型的加密

    android 常用加密,分享一下Android各种类型的加密以下内容仅供参考具体情况以实际为准360加固assets/.appkeyassets/libjiagu.so爱加密lib/armeabi/libexecmain.soassets/ijiami.ajmassets/af.binassets/signed.binassets/ijm_lib/armeabi/libexec.soassets/ijm_lib/X86/libexec.so几维安全asse…

    2022年5月16日
  • java for 的用法总结

    J2SE1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类

    2021年12月26日
  • 2019-07高德地图行政区域省市区json数据获取(php代码)

    2019-07高德地图行政区域省市区json数据获取(php代码)写在前面从省向下查三级,高德县级市的子级会返回街道,正常的市正常返回子级为区。具体高德api参数详情请查看https://lbs.amap.com/api/webservice/guide/api/district代码//获取json数据publicfunctiongetDataAction(){set_time_limit(0);$url=”…

    2022年6月21日
  • spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

    在上一篇中分享了如何使用Eureka进行服务治理,里面搭建的服务注册中心是单体的,但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样

    2022年2月16日

发表回复

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

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