- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构C语言版非循环顺序队列求解迷宫问题,c语言迷宫求解程序,c语言求解方程组,c语言求解线性方程组,c语言求解微分方程,数据结构迷宫求解,数据结构迷宫求解设计,数据结构c语言版,数据结构c语言版pdf,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
- 微生物期末必考题.doc
- 微生物学与免疫学—复习思考题.doc
- 二年级下册除法的初步认识_例5.ppt
- 二年级学会感恩主题班会市公开课一等奖省赛课获奖课件.pptx
- 2025年福建福州市档案局招聘模拟题(及答案).pdf
- 2025年国开电大《国际公法》末考题题库(含答案)(1018).pdf
- 2025年国开电大一网一平台《国学经典选读》教学考题库(含答案)(7611).pdf
- 2025年国开电大《公司概论》末考题题库(含答案)(a1040).pdf
- 2025年国开电大《管理英语2》网考机考题库(含答案).pdf
- 2025年国开电大《西方经济学》末考题题库(含答案)(a1026).pdf
- 1.1党的主张和人民意志的统(课时训练)(原卷版)-A4.docx
- 专题01 必修二Unit 1 课前默写本-2024年高考英语一轮科学解决方案(人教版2019)-A4.docx
文档评论(0)