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

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


相关推荐

  • httprunner(11)运行测试报告「建议收藏」

    httprunner(11)运行测试报告「建议收藏」前言受益于pytest的集成,HttpRunnerv3.x可以使用pytest所有插件,包括pytest-html和allure-pytest,也可以实现这2种方式的报告内置html报告pyt

    2022年7月31日
    5
  • 最小二乘法的详细推导过程-比之前见过的推导都简单!!!

    最小二乘法的详细推导过程-比之前见过的推导都简单!!!最小二乘法发展于天文学和大地测量学领域,科学家和数学家尝试为大航海探索时期的海洋航行挑战提供解决方案。准确描述天体的行为是船舰在大海洋上航行的关键,水手不能再依靠陆上目标导航作航行。来源:我是码农,转载请保留出处和链接!本文链接:http://www.54manong.com/?id=1203(function(){vars=”_”+Ma…

    2022年5月16日
    43
  • Android系统五大布局详解Layout

    Android系统五大布局详解Layout我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的。组件就是我们常见的Button、TextEdit等等。那么我们平时看到的Android手机中那些漂亮的界面是怎么显示出来的呢?这就要用到Android的布局管理器了,网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于

    2022年5月20日
    36
  • 程序员 你读过的书,藏着自己的命运 | 技术类(一)

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!程序员 你读过的书,藏着自己的命运 | 技术类(一)本文的标题来自CSDN的征文题目,让我感触很深。读过书的让你成长,读过的书改变着我们的思想,读过的书也不断成就我们。我也写了一篇征文:程序世界,平凡的我。本文整理的大多数书籍,都是针对Java程序员的,有一些基础类的书籍,如计算机基础 ,适合每个程序员阅读。整…

    2022年3月1日
    46
  • python解释器安装教程(win10)「建议收藏」

    python解释器安装教程(win10)「建议收藏」python,环境变量

    2022年7月22日
    11
  • ostaskcreate函数_freertos

    ostaskcreate函数_freertosOSTaskCreate()函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio)调用者:任务或者是初始化代码。作用:建立一个新任务,任务的建立可以在多个任务环境启动之前,也可以在正在运行的任务中建立,中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有返…

    2025年8月26日
    7

发表回复

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

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