用栈实现迷宫问题求解
源程序:
//base.h
#包括
#包括
#包括
#定义正确1
#定义假0
#定义确定1
#定义错误0
#定义溢出-2
typedef int状态;
//stack.h
#包含“base.h”
#define INIT_SIZE 100 //存储空之间的初始分配
#定义增量10 // store 空来分配增量
type struct {//迷宫中R行和C列的位置
int r;
int c;
} PostType
typedef结构{
int顺序;//路径上当前位置的序列号
柱式座椅;//当前坐标
int di//在下一个坐标的方向
} SElemType//堆栈元素类型
typedef结构{
SElemType * base//堆栈基址,构造前和销毁后都是空。
SElemType * top//堆栈顶部
int stackSize//堆栈容量
}栈;//堆栈类型
status init Stack(Stack & S){//Construct空Stack
s . base =(selem type *)malloc(INIT _ SIZE * sizeof(selem type));
如果(!美国基地)
退出(溢出);//存储分配失败。
s . top = s . base;
S.stackSize = INIT _ SIZE
退货OK;
}//初始化堆栈
状态堆栈属性(堆栈){
//如果s是空,则返回TRUE,否则返回FALSE。
if(S.top==S.base)
返回TRUE
返回FALSE
}//StackEmpty
状态推送(堆栈和S,选择类型e){
//插入元素E作为堆栈的新顶部元素
if(s . top-s . base > = s . Stack size){//堆栈已满,加上空
s . base =(selem type *)realloc(s . base,(s . stack size+INCREMENT)* sizeof(selem type));
如果(!美国基地)
退出(溢出);//存储分配失败。
s . top = s . base+s . stack size;
s . stack size+= INCREMENT;
}
0条评论