/*汉诺塔递归和非递归算法实现*/
#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 elemen
汉罗塔非递归
最新推荐文章于 2022-12-06 15:49:24 发布
这篇博客介绍了如何使用非递归算法实现汉诺塔问题,通过定义结构体`Tower`和链表结构`Node`来存储数据,创建并操作栈`Stack`进行移动操作。程序首先初始化栈,然后将初始状态的塔推入栈中,通过循环和`Pop`、`Push`函数完成非递归移动,最后销毁栈。
摘要由CSDN通过智能技术生成