迷宫分析:在一个封闭的空间内,用’0’表示可走,’1’表示墙;有一个起点和一个终点,需要找到从起点到终点的通路,还要保证在寻路的过程中不会出现来回走的情况。从起点出发,我们用0,1,2,3来表示上下左右,也就是寻路的方向;每走一步之后都按照0,1,2,3的方向进行试探可否走,如果能走,把能走的坐标和来时的方向进行压栈,栈里都是走过的路线,如果0不通走1,1不通走2,2不通走3,都不通退一格,继续按照0-->1-->2-->3的方向寻路。这就很符合栈的先进后出原理,坐标点在栈里的存储可以用数组实现,也可以用链表实现,这里使用链表。存放坐标和方向使用类的数组,好像叫什么结构体,习惯性叫类的数组。
注意:每走一步的时候有几个不能走
1.不是’0’不能走
2.走过的不能走。(也就是栈里已经有的坐标点)
3.退回来的不能走(就是从栈里pop出的点)
栈:
package 栈原理迷宫游戏;
public class Stack {
public LinkList ll = new LinkList();
public int top;
public Stack(){
}
public void push(Data data){
ll.addHeadNode(data);
}
public void pop(){
ll.delNode();
}
public void print(){
ll.print();
}
public Data getNextNode(){
if(ll.head.getNext()!=null){
return ll.head.getNext().data;
}
return null;
}
public boolean isEmpty(){
if(ll.head==null){
return true;
}
return false;
}
public Data look(){
if(isEmpty()!=true){
return ll.head.data;
}
return null;
}
public boolean find(Data data){
if(isEmpty()){
return false;
}else{
return ll.findNode(data);
}