#include #define ROW 11

#define COLUMN 15

typedef struct

{ /*栈中的数据元素的类型定义*/

int row; /*行下标*/

int col; /*列下标*/

int direction; /*下一步移动方向*/

} DATA;

Typedif struct node

{ /* 栈类定义*/

DATA data;

Struct node *next;

}LinkStack;

Typedef struct

{/*移动方向的坐标偏移值*/

int x_offset;

int y_offset;

}DIRECTIONS;

DIRECTIONS dir[8]={{-1,0},{-1,1},{0,1},{1,1},(1,0),{1,-1},{0,-1},{-1,-1}};

Int maze[ROW+2][COLUMN+2]=

{

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},

{1,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,1},

{1,1,0,0,0,1,1,0,1,1,1,0,0,1,1,1,1},

{1,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1},

{1,1,1,0,1,1,1,1,0,1,1,0,1,1,0,0,1},

{1,1,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1},

{1,0,0,1,1,0,1,1,1,0,1,0,0,1,0,1,1},

{1,1,1,0,1,1,0,0,1,1,1,1,1,1,1,1,1},

{1,0,0,1,1,0,1,1,0,1,1,1,1,1,0,1,1},

{1,1,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1},

{1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1},

{1,0,1,0,0,1,1,1,1,1,0,1,1,1,1,0,1},

{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},

}; /*迷宫数组*/

Void InitLinkStack(LinkStack **top)

{ /* 初始化栈,将栈置空*/

*top=(LinkStack *)malloc(sizeof(LinkStack));

(*top)->next=NULL;

}

Bool IsEmpty(LinkStack *top)

{ /*判断栈 是否为空,如果栈空,返回true,否则返回false*/

If(top->next==NULL) return true;

Else return false;

}

Void Push(LinkStack *top,DATA x)

{ /*将元素x压入到栈S中,先申请结点再将其入栈*/

LinkStack*S;

S=(LinkStack *)nalloc(sizeof(Linkstack));

S->data=x; S->next=top->next;top->next=S;

}

DATA Pop(LinkStack *top)

{ /* 将栈S中的栈顶元素出栈*/

LinkStack *S;

DATA data;

If(!IsEmpty(top))

{ /* 如果栈非空,则返回栈顶元素*/

S=top->next; top->next=S->next;

data=S->data; free(S);

return data;

}

}

viod main()

{

LinkStack *S;

DATA d,temp;

int i;

InitLinkStack(&S); /*初始化栈*/

d.col=d.row=1; d direction=0;

Push(S,d); /*将迷宫入口处入栈*/

while(!EsEmpty(S))

{

/*老鼠的当前位置保存在temp中 */

temp=Plp(S);i=temp.direction;

while(i<8)

{

/*生成下一个老鼠位置*/

d.row=temp.row+dir[i].x_offset;

d.col=temp.col+dir[i].y_offset;

d.direction=0;

if(d.row==11&&d.col==15)

{ /*已找到出口*/

print(“[%d,%d]”,d.row,d.col);

while(!IsEmpty(S))

{

d=Pop(S);

printf(“[%d,%d]”,d.row,d.col);

}

free(S);exit(0);

}

else if(maze[d.row][d.col]==0)

{ /*得到下一个可移动位置*/

maze[d.row][d.col]=-1;Push(S,d);

i=d.direction; temp=d;

}

else i++;

}

}

}

3、上机调试、运行程序。

六、 实验报告要求

画出源程序流程图。

7

穿越迷宫c语言程序设计教程课后答案,实验二 迷宫实验.doc相关推荐

  1. 孙家启c语言程序设计教程课后答案,新编C语言程序设计教程(普通高等教育“十二五”规划教材)...

    <新编C语言程序设计教 程>内容主要包括:C语言程序设计概论,数据类型. 运算和输入输出,选择结构 程序设计,循环结构程序设计,数组,函数,指针, 结构体与共用体,文件与位运算 等.各章均 ...

  2. 高精度小数乘法c语言程序设计教程课后答案,级C语言程序设计基教程课后习题答案.doc...

    级C语言程序设计基教程课后习题答案 C语言课后习题习题答案详解(11级教材) 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__ ...

  3. 低频超声检测c语言程序设计教程课后答案,c语言程序设计课后第九章答案

    c语言程序设计课后第九章答案 更多相关问题 [单选] 铝合金热处理质量可以通过测定下述哪个数据来判断?() [单选] 配置磁悬液的正确方法应当是(). [问答题,简答题] 为什么对无损检测人员要有技术 ...

  4. 判断奇偶的c语言程序设计教程课后答案,C语言程序设计实训教程习题和试验解答.doc...

    C语言程序设计实训教程习题和实验解答 2.1 C语言概述 [习题解答] 1结构化程序有三大基本结构:顺序.分支和循环. 2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤.或者看成按 ...

  5. 看图猜字的c语言程序设计教程课后答案,《C语言程序设计》课程设计---猜数字游戏...

    设计题目:猜数字游戏 目目 录录 目录目录 目 录...........................................................- 1 - 1 程序分析与设计. ...

  6. 灯泡四个闪烁c语言程序设计教程课后答案,c语言编程题及答案4.doc

    C C 语言编程题及答案 三 语言编程题及答案 三 1 给小学生出加法考试题 编写一个程序 给学生出一道加法运算题 然后判断学生输入的答案对错与否 按下列 要求以循序渐进的方式编程 程程序序 1 通过 ...

  7. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...

    <c语言程序设计基础教程_习题答案20120319>由会员分享,可在线阅读,更多相关<c语言程序设计基础教程_习题答案20120319(54页珍藏版)>请在技术文库上搜索. 1 ...

  8. 中职升高职c语言程序设计教程课后答案,中职C语言教学创新与实践论文

    中职C语言教学创新与实践论文 摘要:自主学习体现了以学生为中心.以人为本的教学思想,是一种行之有效的教学方法,但中职学生自主学习能力整体比较欠缺,学生怕学.厌学现象严重,给教师的教学带来一定的难度.文 ...

  9. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案解析.doc...

    c语言程序设计基础教程_习题答案解析.doc 习题答案 第1章 填空题 应用程序ONEFUNC.C中只有一个函数,这个函数的名称是__main . 一个函数由__函数头__和__函数体__两部分组成. ...

最新文章

  1. 【Python】Python学习----第一模块笔记
  2. VMware ESXi 6.7服务器设置开机自动启动虚拟机
  3. MongoDB数据库的下载与Python交互
  4. 2019牛客暑期多校训练营(第六场)E - Androgynos (构建自补图)
  5. UTF-8和BOM的一些说明
  6. 欢乐纪中某B组赛【2019.1.25】
  7. STM32----ADC多通道采集
  8. Java中super与this
  9. oracle有硬件吗,Oracle 10G数据库中软硬件环境有哪些要求?
  10. Python函数的参数
  11. 监听input框值得改变
  12. centos 安装mysql5.6.22_CentOS 6.4 安装MySQL 5.6.22
  13. 计算机考研,不止计算机!盘点我们考研可以考的计算机相关专业
  14. iOS Twitter登录无法收到回调数据
  15. Kaggle--房价预测
  16. Unity版本升级指南 从unity xx 到 unity 20xx
  17. SAM4E单片机之旅——21、DMAC之USART回显
  18. 网名闲话之“茶乡浪子”
  19. sqlserver插入数据时如何忽略主键重复的数据
  20. 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(7) 视图

热门文章

  1. java 新建菜单选项_请完成下列Java程序:创建一个下拉式菜单,菜单项包括3个CheckboxM..._考试资料网...
  2. linux 建oracle分区表,Oracle 10g 11g分区表创建举例
  3. 翻翻看 类型html5,3款容易上手的HTML5编辑工具推荐~
  4. panic 苹果aop_Go Web开发之Revel - 拦截器
  5. table虚线边框_web前端工程师7天0基础到精通(TABLE+CSS制作《互联世纪网》)
  6. FTP命令:下载,上传FTP服务器中的文件
  7. 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
  8. php : 常用函数
  9. Linux的iptables常用配置范例(2)
  10. python爬虫抓取51cto博客大牛的文章保存到MySQL数据库