福州大学数计学院 《数据结构》上机实验报告 专业和班级:信息计算科学与应用数学6 班 学号 姓名 成绩 实验名称 栈、队列 实验内容 利用栈实现迷宫求解 实 验 目 的 和 要 求 【实验目的】 应用栈结构来解决应用问题,加深对栈结构特点的认识和应用。 【基本要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d 表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为;(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),.... 问 题 描 述 和 主 要 步 骤 【问题描述】 以一个 mn 的长方阵表示迷宫,0 和1 分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论 【程序设计】 #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define INIT_SIZE 100 //存储空间初始分配量 #define INCREMENT 10 //存储空间分配增量 #define MAXLEN 10//迷宫包括外墙最大行列数目 typedef int Status; typedef struct{ //迷宫中 r 行 c 列的位置 int r; int c; }PostType; typedef struct{ int ord; //当前位置在路径上的序号 PostType seat;//当前坐标 int di; //往下一坐标的方向 }SElemType; //栈元素类型 typedef struct{ SElemType* base;//栈基址,构造前销毁后为空 SElemType* top;//栈顶 int stackSize; //栈容量 }Stack; //栈类型 Status InitStack(Stack &S){ //构造空栈 s S.base=(SElemType*)malloc(INIT_SIZE *sizeof(SElemType)); if(!S.base) exit(OVERFLOW);//存储分配失败 S.top=S.base; S.stackSize=INIT_SIZE; return OK; }//InitStack Status StackEmpty(Stack S){ //若 s 为空返回 TRUE,否则返回 FALSE if(S.top==S.base) return TRUE; return FALSE; }//StackEmpty Status Push(Stack &S,SElemType e){//插入元素 e 为新的栈顶元素 if(S.top-S.base >=S.stackSize){//栈满,加空间 S.base=(SElemType *)realloc(S.base,(S.stackSize+INCREMENT)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); //存储分...