收藏 分享(赏)

数据结构—马的遍历.doc

上传人:weiwoduzun 文档编号:5641836 上传时间:2019-03-10 格式:DOC 页数:6 大小:68KB
下载 相关 举报
数据结构—马的遍历.doc_第1页
第1页 / 共6页
数据结构—马的遍历.doc_第2页
第2页 / 共6页
数据结构—马的遍历.doc_第3页
第3页 / 共6页
数据结构—马的遍历.doc_第4页
第4页 / 共6页
数据结构—马的遍历.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、马的遍历 问题描述设计要求是马从棋盘上的一个位置出发,然后按照中国象棋的规则马走日,来走下一步,直到马走完棋盘上的每一个位置终止。 设计思路首先将棋盘每个位置的标记为0,然后对棋盘周围的两个格子标记为1,用于检测,相当于棋盘的边界。每个节点的包含马走过的位置以及方向。将节点以及下一次要走的方向压入栈中,然后对每个节点可以走的方向进行判断,然后找出最佳的方向。 数据结构设计将节点走过的位置以及方向封装到一起,利用栈的特点实现马的遍历。 功能函数设计void Init_Path(path *p)初始化栈int Push_Path(path *p,pathnode t,int v)将节点以及下一次走

2、的方向压入栈中int Empty(path p)判断栈是否为空int Pop_Path(path *p,pathnode *t)出栈int Count(int x,int y)计算节点周围可以移动的所有方向int Find_Direction(int x,int y)寻找下一次移动的方向void Round(int x,int y,int v)马的遍历函数void Mark_Dir(int v)标志方向函数void Mark_Che(int v)标志棋盘函数 程序代码#include#includeint chessboard1413;/二维数组表示棋盘每个棋子位置,其中棋盘四周有两个格子,用

3、于检测int CanPass14138;/每个棋子的八个方向哪些可以走typedef struct/棋盘的八个方向int y,x;direction;direction dir8=2,1,1,2,-1,2,-2,1,-2,-1,-1,-2,1,-2,2,-1;/八个方向/栈的设计typedef structint x,y;/走过位置int di;/方向pathnode;typedef structpathnode pa90;int top;path;/顺序栈void Init_Path(path *p)/初始化栈p-top=-1;int Push_Path(path *p,pathnode t

4、,int v)/压节点及其向下一位移动的方向入栈if(p-top=63+26*v)return -1;elsep-top+;p-pap-top.x=t.x;p-pap-top.y=t.y;p-pap-top.di=t.di;return 1;int Empty(path p)/判断栈是否为空if(p.topx=p-pap-top.x;t-y=p-pap-top.y;t-di=p-pap-top-.di;return 1;int Count(int x,int y)/计算每个节点周围有几个方向可以走int count=0,i=0;for(i=0;icount)min=count;d=dire;if(d8+2*v)printf(“输入错误,请重新输入 !(横坐标在1-%d之间)n“,8+2*v);elsebreak;while(1)printf(“请输入入口点纵坐标: “);scanf(“%d“,if(y8+v)printf(“输入错误,请重新输入 !(纵坐标在1-%d之间)n“,8+v);elsebreak;Round(x,y,v);printf(“继续(是:y;否:其他 ):“);fflush(stdin);scanf(“%c“, 运行与测试

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报