java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html

java实现链栈的代码:

package stackapplication;public class LinkStack {private Element base;private Element top;class Element{public Step data;public Element next;}/*** 初始化栈* */public void initStack(){top = new Element();base = new Element();top.data=null;top.next=base;base.data=null;base.next=null;}/*** 入栈* */public void push(Step o){Element e = new Element();e.data = o;if(top.next==base)//第一次入栈操作{e.next=base;top.next=e;}else{e.next=top.next;top.next=e;}}/*** 出栈* */public Step pop(){Step o = null;if(top.next==base){System.out.println("栈中没有元素!");return o;}else{o = top.next.data;//System.out.println("出栈操作"+o);top.next=top.next.next;}return o;}/*** 判断栈是否为空* */public Boolean isEmpty(){if(top.next==base){return true;}return false;}/*** 打印栈* */public void print(){System.out.print("打印栈:");Element temp =top;while(temp.next!=base){System.out.print(temp.next.data+"\t");temp =temp.next;}System.out.println();}
}

java实现迷宫求解的类代码:

package stackapplication;public class Maze {public static void main(String[] args) {int [][]map={{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}};//入口在map[1][1],出口在map[8][8]int [][]move={{0,-1},{0,1},{-1,0},{1,0}};//上下左右四个移动方向LinkStack s = new LinkStack();s.initStack();LinkStack s1 = new LinkStack();s1.initStack();path(map,move,s,s1);while(!s1.isEmpty()){Step step = s1.pop();System.out.println("("+step.x+","+step.y+")");}}private static int path(int[][] map, int[][] move,LinkStack s,LinkStack s1) {Step step = new Step(1, 1, -1);//起始位置//map[1][1]=-1;//表示已走过该点s.push(step);s1.push(step);while(!s.isEmpty()){step=s.pop();int x=step.x;int y=step.y;int d=step.d+1;while(d<4){int i=x+move[d][0];int j=y+move[d][1];if(map[i][j]==0 && i>=0 && i<10 && j>=0 &&j<10)//该位置是通的,且不越界{System.out.println(i+","+j);step = new Step(x, y, d);s.push(step);//将当前位置压入栈顶s1.push(step);step = new Step(i, j, d);s.push(step);//将当前位置压入栈顶s1.push(step);x=i;y=j;map[x][y]=-1;//表示已走过该点if(x==8 && y==8)//到达出口{System.out.println("到达出口");return 1;}else{d=0;//到达一个新的点,所以要从新初始化方向,遍历其4个方向是否是通的}}else{d++;//下一个方向}}}return 0;}
}class Step
{int x;//横坐标int y;//纵坐标int d;//移动方向,取值为0,1,2,3。分别表示上下左右4个方向。public Step(int x,int y,int d){this.x=x;this.y=y;this.d=d;}
}

  

java使用链栈实现迷宫求解相关推荐

  1. java使用链栈实现数制转换

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...

  2. java语言链栈_Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...

  3. C语言用栈实现迷宫求解

    大学的实训课,要求做一个迷宫,其中墙用1标注,通路用0标注,然后寻找一个从默认起点1,1到默认终点8,8的通路.发现网上有好多类似的其实都用不了,于是乎自己缝缝补补出了一个能用的,注解写的比较全,可以 ...

  4. java迷宫算法栈_java - 用Java创建迷宫求解算法 - 堆栈内存溢出

    我被分配了在Java中创建迷宫求解器的任务. 这是作业: Write an application that finds a path through a maze. The maze should ...

  5. 迷宫求解 java_迷宫求解算法(java版)

    迷宫求解算法一直是算法学习的经典,实现自然也是多种多样,包括动态规划,递归等实现,这里我们使用穷举求解,加深对栈的理解和应用 定义Position类用于存储坐标点 起点坐标为(1,1),终点坐标为(8 ...

  6. 数据结构之迷宫问题求解(一)利用栈与递归求解出口

    本文适合于对迷宫问题已有初步研究,或阅读代码能力较强的人. 因此,如果你对迷宫问题一无所知,请参考其他更详细的资料. 迷宫问题,是一个对栈(Stack)典型应用的例子之一. 假如,有如下10X10的迷 ...

  7. c++:栈的基本操作+实例:迷宫求解

    栈的基本操作+实例:迷宫求解 #include<iostream> using namespace std;struct Node {int datai;int dataj;Node* n ...

  8. 栈-迷宫求解路径问题

    //迷宫问题,暴力求解#include"stdio.h"#include"Stack.c"#define MAX_SIZE 100 //迷宫最大规格是100x1 ...

  9. C++ 链栈函数模板解决 迷宫问题(DPS) 学习笔记

    文章目录 前言 一.栈的链式存储(链栈,链式堆栈)是什么? 二.链栈 的函数模板的编写 1.源码分享 2.调用方式 三.路径函数的编写 1.源码分享 2.相关调用函数 以及define 和 struc ...

最新文章

  1. python函数作用域包括局部变量和参数_python函数变量的作用域声明(全局变量和局部变量)...
  2. OpenGL 重复渲染
  3. jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...
  4. 程序员找工作时,大公司 VS 小公司,应该如何做出正确的选择?
  5. Sending and Receiving Binary Data
  6. 腰椎患者多运动好,还是多休息好?
  7. HCIE-RS面试----数据帧格式
  8. 基于gdal的格网插值
  9. 循环机换变速箱油教程_变速箱油多久换?很多老司机都可能不知道
  10. FISCO BCOS Solidity 智能合约 批量插入新增数据
  11. 计算机论文要多少字,期刊论文一般多少字
  12. 关于语雀知识库的二三事
  13. wireshark抓取分析UDP数据包
  14. Word 2010页眉页脚从某一页开始
  15. 买房税费大攻略!哪些费用必须交?
  16. 获取当前日期的三个月前的日期
  17. 农民抗征地住帐篷夜间起火1死3伤
  18. 计算机传输方式:串行传输/并行传输、同步传输/异步传输、单工/半双工/全双工
  19. GoLang之interface底层系列二(类型断言)
  20. 27个iOS开源库,让你的开发坐上火箭吧

热门文章

  1. 网络常用命令收藏与整理
  2. 新的UWP和Win32应用程序分发模型
  3. 三层交换不同VLAN间通信
  4. pollepoll实现分析(二)——epoll实现
  5. 杀掉某个进程的 Shell
  6. xp与Linux双系统共存
  7. CF912D Fishes 期望
  8. [OpenGL]未来视觉1-Android摄像头采集基础
  9. 移动端适配方案 flexible.js
  10. 从CTO到创始人 孙元浩基础软件破局之路