- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[原创]数据结构C语言版 非循环顺序队列求解迷宫问题
/*
数据结构C语言版 非循环顺序队列求解迷宫问题
利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)
编译环境:Dev-C++ 4.9.9.2
日期:2011年2月12日
*/
#include stdio.h
#include malloc.h
#define M 5 // 迷宫行数(包括外墙)
#define N 5 // 迷宫列数(包括外墙)
#define D 4 // 移动方向数,只能取4和8。(8个,可斜行;4个,只可直走)
// 移动数组,移动方向由正东起顺时针转
struct
{
int x,y;
#if D==8
}move[D]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}};
#endif
#if D==4
}move[D]={{0,1},{1,0},{0,-1},{-1,0}};
#endif
// 定义栈元素类型和队列元素类型,两者为相同类型。
typedef struct
{
int x,y; // 当前点的行值,列值
int pre; // 前一点在队列中的序号
} SElemType, QElemType;
#define STACK_INIT_SIZE 10 // 存储空间初始分配量
#define STACKINCREMENT 2 // 存储空间分配增量
// 栈的顺序存储表示 P46
typedef struct SqStack
{
SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL
SElemType *top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}SqStack; // 顺序栈
// 顺序队列(非循环,因为是非循环的,所以需要判断是否溢出
#define MAXQSIZE 5 // 最大队列长度(对于循环队列,最大队列长度要减1)
typedef struct
{
QElemType *base;// 初始化的动态分配存储空间 相当于一个数组
// 头指针,若队列不空,指向队列头元素,相当于一个数组下标
int front;
// 尾指针,若队列不空,指向队列尾元素的下一个位置 相当于一个数组下标
int rear;
}SqQueue;
// 构造一个空队列Q
int InitQueue(SqQueue *Q)
{
//分配定长的空间,相当于一个数组
(*Q).base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!(*Q).base) // 存储分配失败
exit(0);
(*Q).front=(*Q).rear=0; //初始化下标
return 1;
}
// 销毁队列Q,Q不再存在
int DestroyQueue(SqQueue *Q)
{
if((*Q).base)
free((*Q).base);
(*Q).base=NULL;
(*Q).front=(*Q).rear=0;
return 1;
}
// 若队列Q为空队列,则返回1,否则返回0
int QueueEmpty(SqQueue Q)
{
if(Q.front==Q.rear) // 队列空的标志
return 1;
else
return 0;
}
// 插入元素e为Q的新的队尾元素
int EnQueue(SqQueue *Q,QElemType e)
{
if((*Q).rear=MAXQSIZE)
{ // 队列满,增加1个存储单元
(*Q).base=(QElemType *)realloc((*Q).base,
((*Q).rear+1)*sizeof(QElemType));
if(!(*Q).base) // 增加单元失败
return 0;
}
*((*Q).base+(*Q).rear)=e;
(*Q).rear++;
return 1;
}
// 若队列不空,则删除Q的队头元素,用e返回其值,并返回1,否则返回0
int DeQueue(SqQueue *Q,QElemType *e)
{
if((*Q).front==(*Q).rear) // 队列空
return 0;
*e=(*Q).base[(*Q).front];
(*Q).front=(*Q).front+1;
return 1;
}
// 构造一个空栈S。
int InitStack(SqStack *S)
{
// 为栈底分配一个指
您可能关注的文档
- [分享]电火花机维护保养细则.doc
- [整理版]成人高考(专升本)政治必重视点题目.doc
- [整理]电火花机维护保养细则.doc
- [方案]电火花机维护保养细则.doc
- [重点]电火花机维护保养细则.doc
- [新版]做蛋糕配方.doc
- [汇总]常用螺丝种类.doc
- [DOC]-钟星消防工程公司消防安全管理台帐(25页)-工程综合.doc
- [试题]国际贸易理论与政策教学大纲.doc
- [精品]南海区学前教育机构审批表表.doc
- [轻工标准]-QBT 2681-2004 食品工业用不锈钢薄壁容器.pdf.pdf
- [轻工标准]-QBT 2681-2018 食品工业用不锈钢薄壁容器.pdf.pdf
- [管理]心理咨询中应用理性情绪治疗.ppt
- [教材]《ERP原理与应用(专科必修)》2010年7月期末试题及答案.doc
- English language proficiency assessment for English language teachers in Hong Kong Development and dilemmas文档.doc
- [小学]安全生产寓言小故事演讲赛专用.ppt
- [中学教育]《得道多助,失道寡助》同步练习.doc
- [重点]房屋建筑单元工程质量检查评定表6.doc
- §11 高压氧治疗适应症与禁忌症.ppt.ppt
- [教学设计]深井泵房电动葫芦安装施工方案.doc
最近下载
- 2024年06216中外建筑史自学考试知识点.doc VIP
- 2025年保密知识试题库及完整答案(必刷).docx VIP
- 医学课件-高流量呼吸湿化治疗.pptx VIP
- 2024年秋新人教版七年级英语上册全套课件:Starter Unit 2 Keep Tidy!汇总.pptx VIP
- 06216中外建筑史自学考试知识点.doc VIP
- 最新《胎盘植入性疾病诊断和处理指南(2023)》.pdf VIP
- 部编版小学二年级上册道德与法治全册教案(含教学反思).pdf VIP
- 2023年百色市供电局项目制用工招聘考试真题.docx VIP
- PDLC调光膜和调光玻璃.pdf VIP
- 传祺-传祺GS8-产品使用说明书-传祺GS8 320T 尊贵版-GAC6480J2F5A-GS8用户手册_20180515.pdf VIP
文档评论(0)