迷宫问题代码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迷宫问题代码

#define OVERFLOW -2 #define ERROR 0 #define NULL 0 #define true 1 #define TRUE 1 #define false 0 #define FALSE 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #include stdio.h #include stdlib.h /* 初始化迷宫,1表示通道,0表示墙 */ int maze[8][8] = { 1,1,0,1,1,1,0,1, 1,1,0,1,1,1,0,1, 1,1,1,1,0,0,1,1, 1,0,0,0,1,1,1,1, 1,1,1,0,1,1,1,1, 1,0,1,1,1,0,1,1, 1,0,0,0,1,0,0,1, 0,1,1,1,1,1,1,1 }; //定义栈元素类型 typedef struct MStackElem { int x;//x坐标 int y;//y坐标 int val;//maze[x][y]的值 }MStackElem; //定义栈 typedef struct { MStackElem * base; MStackElem * top; int stackSize; }MStack; //=============Stack的实现======================== //初始化栈-------构造一个空栈 void initStack(MStack *s) { s-base = (MStackElem *)malloc(STACK_INIT_SIZE * sizeof(MStackElem)); if (!s-base) { printf(in initStack()...Failed to initalize the MStack ,no enough space! exit now. ); exit(OVERFLOW);//存储分配失败 } s-top = s-base; s-stackSize = STACK_INIT_SIZE; } //向栈中添加元素 void push(MStack *s,MStackElem e) { //向栈中添加元素前先判断栈是否还有空间容纳新元素 if (s-top - s-base = s-stackSize) { //栈满,追加元素 s-base = (MStackElem *)realloc(s-base, (STACK_INIT_SIZE+STACKINCREMENT) * sizeof(MStackElem)); if (!s-base) { printf(in push()...Failed to realloc the MStack ,no enough space! exit now. ); exit(OVERFLOW);//存储分配失败 } s-top = s-base + s-stackSize; //因为是重新分配了空间,所以base的值其实已经改变,所以top的值也就相应的改变,才能指向新的迷宫栈 s-stackSize += STACKINCREMENT; } //将新元素加到栈顶 *(s-top++) = e; } //获得栈顶元素 MStackElem getTop(MStack *s) { if (s-top == s-base) { printf(in getTop(),empty stack! exit now. ); exit(ERROR); } else { return *(s-top - 1); } } //删除栈顶元素 void pop(MStack *s) { //若栈不为空,则删除s的栈顶元素 if (s-top == s-base) { printf(in pop(),empty stack! exit now. ); exit(ERROR); } else { --(s-top); } } //================求解迷宫的相关操作=====================// //构造两个栈,一个用来保存探索中的全部路径,一个用来保存有效路径 MStack re

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档