Java 链表节点值问题
程序代码:
以下是A星算法中部分代码,省略起始点到终点的运算代码。有点不太明白,Node getNode=nowNode,这里getNode只得到一个终节点 的值就可以循环取值,这是为什么?请解译一下,这是不是链表取值问题。谢谢! public class AStar { private List<Node> openList; private List<Node> closeList; private int startX,startY,endX,endY; public AStar(){ openList=new ArrayList<Node>(); closeList=new ArrayList<Node>(); } /*调用search方法*/ public static void main(String[] args) { int[][] map = new int[][] { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, {1, 1, 1, 1, 0, 1, 1, 1, 1, 1 } }; Astar astar=new Astar(); astar.search(0,0, 5, 9); } /*判断是否到达目标*/ public int search(int startX,int startY,int endX,int endY){ if((index=contain(openList,end.x,end.y))!=-1){//如果不等于-1就到终点 int count=-1; Node nowNode=openList.get(index); Node getNode=nowNode;//不太明白之处 while(getNode.father!=null) { getNode=getNode.father; count++; } } /*如果包含则返回索引,否则返回-1*/ private int contain(List<Node> nodes,int x,int y){ Node node=null; for(int i=0;i<nodes.size();i++) { node=nodes.get(i); if(node.x==x&&node.y==y) return i; } return -1; } /*节点*/ public Node(int x,int y,Node father){ this.x=x; this.y=y; this.father=father; } }
[ 本帖最后由 gxlove 于 2014-5-18 15:57 编辑 ]