资源简介
Dijkstra 迪杰斯特拉算法的 JAVA实现
代码片段和文件信息
package homework2;
public class Find {
MapArray map;
int startPoint;
int endPoint;
NowShortest nowShortest;
int nowPoint;
public Find(MapArray mapint startPointint endPoint){
this.map=map;
this.startPoint=startPoint;
this.endPoint=endPoint;
this.nowShortest=new NowShortest(map.pointNum);
nowPoint=startPoint;
}
public void FindShortest(){
//标记该点已选
nowShortest.shortestLinesValue[1][nowPoint]=0;
//初始化起始节点
nowShortest.firstShortestLine[nowPoint].next=new Node(map.pointNum);
nowShortest.firstShortestLine[nowPoint].next.pre=nowShortest.firstShortestLine[nowPoint].next;
nowShortest.firstShortestLine[nowPoint].next.array[0]=nowPoint;
nowShortest.firstShortestLine[nowPoint].isTheEnd=false;
for(int i=0;i
nowShortest.shortestLinesValue[0][nowPoint]=1;
for(int j=0;j int theValue;
if(map.theMap[nowPoint][j]!=0){
theValue=map.theMap[nowPoint][j];
}
else {
theValue=300;//大于预设的200
}
if(nowShortest.shortestLinesValue[1][nowPoint]+theValue
SetTheLine(nowShortest.firstShortestLine[nowPoint].next
nowShortest.firstShortestLine[j]j);
nowShortest.shortestLinesValue[1][j]=
nowShortest.shortestLinesValue[1][nowPoint]+theValue;
}
else if(nowShortest.shortestLinesValue[1][nowPoint]+theValue
==nowShortest.shortestLinesValue[1][j]){
//找出原链表最后一个节点
Node currentNode=nowShortest.firstShortestLine[j];
while(currentNode.isTheEnd==false){
currentNode=currentNode.next;
}
SetTheLine(nowShortest.firstShortestLine[nowPoint].nextcurrentNodej);
}
else{
}
}
int MinValue=200;
int MinPoint=0;
for(int k=0;k if(nowShortest.shortestLinesValue[0][k]==0){
if(nowShortest.shortestLinesValue[1][k] MinValue=nowShortest.shortestLinesValue[1][k];
MinPoint=k;
}
else{
}
}
else{
}
}
nowPoint=MinPoint;
}
Print();
}
//currentNode为当前节点的最短路径链表第一个有效节点
//newLinePreNode为更新节点的最短路径链表的首节点
public void SetTheLine(Node currentNodeNode newLinePreNodeint pointNum){
Node newLineCurrentNode;
//将更新的值保存在链表中
while(currentNode.isTheEnd==false){
Node node=new Node(map.pointNum);
for(int k=0;k if(currentNode.array[k]!=-1){
node.array[k]=currentNode.array[k];
}
else{
node.array[k]=pointNum;
break;
}
}
newLineCurrentNode=node;
newLineCurrentNode.pre=newLinePreNode;
newLinePreNode.next=newLineCurrentNode;
newLinePreNode.isTheEnd=false;
newLinePreNode=newLineCurrentNode;
currentNode=currentNode.next;
}
Node node=new Node(map.pointNum);
for(int k=0;k if(currentNode.array[k]!=-1){
node.array[k]=c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6921 2013-04-15 14:20 Dijkstra迪杰斯特拉算法JAVA\Find.java
文件 1606 2013-04-16 09:39 Dijkstra迪杰斯特拉算法JAVA\Main.java
文件 415 2013-04-11 17:56 Dijkstra迪杰斯特拉算法JAVA\MapArray.java
文件 230 2013-04-13 11:57 Dijkstra迪杰斯特拉算法JAVA\Node.java
文件 419 2013-04-12 19:09 Dijkstra迪杰斯特拉算法JAVA\NowShortest.java
目录 0 2013-04-22 17:06 Dijkstra迪杰斯特拉算法JAVA
----------- --------- ---------- ----- ----
9591 6
- 上一篇:Java实现推箱子游戏
- 下一篇:运用java图形界面编写的学生信息管理系统
相关资源
- 运用java图形界面编写的学生信息管理
- Java实现推箱子游戏
- JAVA三大框架思维导图
- Java数据结构和算法中文第二版——书
- JNI Java本地接口规范官方中文版
- JSP+JavaBean+MySQL实现登陆及增删改查
- java jsp mysql mvc 完整版,带图片
- Java核心技术 卷2 第10版 中文版
- 21 内部窗体java绝对新手
- 中国象棋对弈系统_java课程设计
- Java 2实用教程,第五版 。课后习题
- java生成二维码80134
- 教材管理系统+java+数据库+包含所有表
- JAVA计算器(含有优先级的判定)
- Java 源码:计算某个目录下的所有文件
- java 源码-电梯模拟器-灵活自定义-完美
- Java画图板课程设计报告只有报告没有
- java写的一个流星雨小程序
- java 科学型计算器 代码
- 记事本打印和页面设置功能Java实现
- Java写的模拟打电话程序源代码
- java 矢量绘图小程序
- 打砖块小游戏带音效
- NetBetBeans 编写Java调用DLL代码
- 课程设计jsp 新闻发布系统 完整版
- 国密算法sm4的java实现
- java记事本代码及设计方法
- 基于JAVA的飞机大战游戏的设计与实现
- 鞋厂办公系统Java+MySQL含文档
- java贪吃蛇内附详细注释
评论
共有 条评论