数据结构 用栈解迷宫源代码
2018-02-05 21:20
232 查看
#include <iostream> #include <stdio.h> #define MaxSize 100 #define M 8 #define N 8 using namespace std; int mg[M+2][N+2]= { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0,1,1,0,0,1}, {1,0,1,1,1,0,0,0,0,1}, {1,0,0,0,1,0,0,0,0,1}, {1,0,1,0,0,0,1,0,0,1}, {1,0,1,1,1,0,1,1,0,1}, {1,1,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1} }; typedef struct { int i; int j; int di; } Box; typedef struct { Box data[MaxSize]; int top; } StType; bool mgpath(int xi,int yi,int xe,int ye) { int i,j,k,di,find; StType st; st.top=-1; st.top++; st.data[st.top].i=xi;st.data[st.top].j=yi; st.data[st.top].di=-1; mg[xi][yi]=-1; while(st.top>-1) { i=st.data[st.top].i; j=st.data[st.top].j; di=st.data[st.top].di; if(i==xe&&j==ye) { printf("路径:\n"); for(k=0; k<=st.top; k++) { printf("\t(%d, %d)",st.data[k].i,st.data[k].j); if((k+1)%5==0) printf("\n"); } printf("\n"); return true; } find=0; while(di<4&&find==0) { di++; switch(di) { case 0: i=st.data[st.top].i-1; j=st.data[st.top].j; break; case 1: i=st.data[st.top].i; j=st.data[st.top].j+1; break; case 2: i=st.data[st.top].i+1; j=st.data[st.top].j; break; case 3: i=st.data[st.top].i-1; j=st.data[st.top].j-1; break; } if(mg[i][j]==0) find=1; } if(find==1) { st.data[st.top].di=di; st.top++; st.data[st.top].i=i; st.data[st.top].j=j; st.data[st.top].di=-1; mg[i][j]=-1; } else { mg[st.data[st.top].i][st.data[st.top].j]=0; st.top--; } } return false; } int main() { if(!mgpath(1,1,M,N)) printf("无解"); return 0; }
运行:
相关文章推荐
- 数据结构 迷宫 C++源代码 非递归解法
- 共同学习Java源代码--数据结构--LinkedList类(二)
- 迷宫源代码
- 数据结构-迷宫求解路径
- java与数据结构和算法相关源代码
- 共同学习Java源代码--数据结构--LinkedList类(七)
- 共同学习Java源代码--数据结构--AbstractList抽象类(四)
- 共同学习Java源代码--数据结构--ArrayList类(四)
- 编程中最没用的东西是源代码,最有用的东西是算法和数据结构。
- 数据结构-顺序队列解决最短迷宫路径问题
- 数据结构_单链表的插入与删除_C语言源代码
- 数据结构_求二叉树的宽度_C语言源代码(待完善)
- 数据结构迷宫问题
- C语言-数据结构-冒泡排序及优化-源代码
- 数据结构 栈的应用 -- 迷宫的实现
- 3-4-迷宫寻路-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
- 共同学习Java源代码-数据结构-AbstractMap抽象类(二)
- 共同学习Java源代码--数据结构--AbstractSequentialList类
- 共同学习Java源代码-数据结构-HashMap(十六)
- c语言版数据结构(奇迹冬瓜)-栈实战(1)栈解迷宫<迷宫算法>