소개글
안녕하세요자바로 지하철 최단거리를 스윙을 사용하여 구현하였습니다.
개발환경은 에디트플러스2와 MSSQL DB를 사용하였고
알고리즘은 다익스트라 알고리즘을 사용하였습니다.
주석도 거의 달려있어서 다익스트라나 소스 내용을 이해하시는데 어려움이 없을것입니다.
제가 기말프로젝트로 제출하였는데
조금 손보신다면 더욱 좋은 프로그램이 될겁니다.
설명은 subway.txt 파일에 들어있습니다.
컴파일 실행환경
EDITPLUS2, MSSQL압축파일 내 파일목록
BackgroundImage$1.class
BackgroundImage$Mou.class
BackgroundImage.class
BackgroundImage.java
Dispaly.java
Display.class
getJDBC.class
getJDBC.java
line.jpg
logo.jpg
NodeType.class
NodeType.java
Search.class
Search.java
Search.java.bak
SearchPan$1.class
SearchPan$1seachListener.class
SearchPan$2.class
SearchPan.class
SearchPan.java
SubType.class
SubType.java
subway.sql
subway.txt
SubwaySearch.class
SubwaySearch.java
SubwaySearch.java.bak
BackgroundImage$Mou.class
BackgroundImage.class
BackgroundImage.java
Dispaly.java
Display.class
getJDBC.class
getJDBC.java
line.jpg
logo.jpg
NodeType.class
NodeType.java
Search.class
Search.java
Search.java.bak
SearchPan$1.class
SearchPan$1seachListener.class
SearchPan$2.class
SearchPan.class
SearchPan.java
SubType.class
SubType.java
subway.sql
subway.txt
SubwaySearch.class
SubwaySearch.java
SubwaySearch.java.bak
참고 자료
// 역 이름을 갖고 역 번호를 찾는 함수.// 해당 역이 S[] 에 존재하지 않으면 마지막에 추가하고 그 번호를 반환.
static int searchStation(String stationName) {
int i=1;
for (i = 1; i < stationCount; i++) {
if(S[i].sName.equals(stationName)){ //있으면
return i;
}
}
// 없으면
S[i].sName = stationName;
S[i].link = null;
S[i].visited = false;
stationCount++;
return i;
}
// SubNode 에 Node 를 삽입하는 함수.
// 삽입되는 노드의 가중치는 시간 dis(분)
static void insertNode(int subNodeNum, int nodeNum, int dis) {
// 메모리에 NodeType 구조체를 생성하고 그 주소를 newNode 에 치환
NodeType newNode = new NodeType(); // 새로 추가될 노드의 값을 입력
newNode.nodeNum = nodeNum;
newNode.dis = dis; // 노드를 맨 앞에 삽입
newNode.next = S[subNodeNum].link;
S[subNodeNum].link = newNode;
}
static void insert(String name1, String name2, int time) { //노선을 구성하기 위한 함수 역1, 역2, 걸리는 시간
int Index1, Index2;
Index1 = searchStation(name1);
Index2 = searchStation(name2);
// 두 역에 Edge를 추가.
insertNode(Index1, Index2, time);
insertNode(Index2, Index1, time);
}
static int Dijkstra(int startNodeNum, int endNodeNum) {