⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.h

📁 经典迷宫算法
💻 H
字号:
// file: stack.h
#include "com_def.h"

#define STACK_INIT_SIZE  100
#define STACKINCREMENT   10

// 定义栈数据类型

// 点坐标位置
typedef struct _PosType
{
    int x;
    int y;
}PosType;

// 栈的元素类型
typedef struct 
{
    int ord;          // 当前路径的第几步
    PosType seat;     // 坐标
    int di;           // 走向下一通道块的方向
}ElemType;

typedef ElemType  SELEM_TYPE;

typedef enum _STACK_Status
{
    STACK_OK = 0,
    STACK_ERR
}STACK_Status;

typedef struct
{
    SELEM_TYPE *base;
    SELEM_TYPE *top;
    int  stacksize;
}SqStack;

// 构造一个空栈
bool InitStack(SqStack *S);

// 销毁栈
void DestroyStack(SqStack *S);

// 把S置为空栈
void ClearStack(SqStack *S);

// 判断栈是否为空
bool StackEmpty(SqStack *S);

// 返回栈的长度
int StackLength(SqStack *S);

// 若栈不空,用e返回S的栈顶元素
bool GetTop(SqStack *S, SELEM_TYPE *e);

// 将e压至栈顶
bool Push(SqStack *S, SELEM_TYPE e);

// 删除栈顶元素,并以e返回
bool Pop(SqStack *S, SELEM_TYPE *e);

// 从栈顶到栈底(也可以栈底到栈顶)每个元素调用函数visit
bool StackTraverse(SqStack *S, bool (*visit)(SELEM_TYPE e) , bool direction);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -