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

汉罗塔非递归_汉诺塔递归原理汉诺塔递归和非递归算法实现 include using namespace std typedef struct Tower int height char a b c Tower typedef struct Node Tower element Node pNext Node LinkList typedef struct

/*汉诺塔递归和非递归算法实现*/
#include
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<"< }
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);
}
编程小号
上一篇 2025-04-10 17:51
下一篇 2025-03-14 19:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/111463.html