📄 creategraphic.java
字号:
//Create the Northern Ireland graphic
import javax.swing.*;
import java.awt.Graphics;
import java.lang.*;
import java.lang.String;
import java.util.Stack;
import java.util.Vector;
public class CreateGraphic
{
public int NumOfVer;//Number of vertexs
//public int NumOfEdge;//Number of edges
public Vertex VertexList[];//VertexList used to store all of the vertex
public EdgeInfo unvisitedEdge[];
public void Create()
{
NumOfVer = 23; //there are 22 vertexs, the first element is useless
VertexList = new Vertex[NumOfVer];//Establish the vertexList
/********************************************************************************************
Input the Vertexs information
********************************************************************************************/
VertexList[1] = new Vertex( 1,"Portrush");
VertexList[2] = new Vertex( 2,"Ballycastle");
VertexList[3] = new Vertex( 3,"Coreraine");
VertexList[4] = new Vertex( 4,"Ballymoney");
VertexList[5] = new Vertex( 5,"Limavady");
VertexList[6] = new Vertex( 6,"Londonderry");
VertexList[7] = new Vertex( 7,"Strabane");
VertexList[8] = new Vertex( 8,"Magherafelt");
VertexList[9] = new Vertex( 9,"Ballymena");
VertexList[10] = new Vertex( 10,"Lame");
VertexList[11] = new Vertex( 11,"Cookstown");
VertexList[12] = new Vertex( 12,"Antrim");
VertexList[13] = new Vertex( 13,"Carrickfergus");
VertexList[14] = new Vertex( 14,"Omagh");
VertexList[15] = new Vertex( 15,"Belleek");
VertexList[16] = new Vertex( 16,"Eaniskillen");
VertexList[17] = new Vertex( 17,"Dungannon");
VertexList[18] = new Vertex( 18,"Amagh");
VertexList[19] = new Vertex( 19,"Newry");
VertexList[20] = new Vertex( 20,"Warrenpoint");
VertexList[21] = new Vertex( 21,"Newcastle");
VertexList[22] = new Vertex( 22,"Belfast");
/**********************************************************************************************
Insert the linked edge to the vertex
***********************************************************************************************/
VertexList[1].insertFirst(1,3,5.5,20.0,64.0,42.0);
VertexList[1].insertFirst(2,2,27.0,60.0,77.0,86.0);
VertexList[1].linkedEdgenum = 2;
VertexList[2].insertFirst(2,1,27.0,60.0,77.0,86.0);
VertexList[2].insertFirst(3,4,24.0,55.0,62.0,48.0);
VertexList[2].insertFirst(4,9,34.5,80.0,67.0,79.0);
VertexList[2].insertFirst(5,9,27.5,55.0,60.0,45.0);
VertexList[2].insertFirst(6,10,42.0,135.0,80.0,80.0);
VertexList[2].linkedEdgenum = 5;
VertexList[3].insertFirst(1,1,5.5,20.0,64.0,42.0);
VertexList[3].insertFirst(7,5,19.5,64.0,60.0,76.0);
VertexList[3].insertFirst(8,5,13,25.0,45.0,55.0);
VertexList[3].insertFirst(9,8,28.5,28.0,70.0,25.0);
VertexList[3].insertFirst(10,4,6.5,30.0,35.0,35.0);
VertexList[3].linkedEdgenum = 5;
VertexList[4].insertFirst(3,2,24.0,55.0,62.0,48.0);
VertexList[4].insertFirst(10,3,6.5,30.0,35.0,35.0);
VertexList[4].insertFirst(11,9,20.5,80.0,30.0,37.0);
VertexList[4].linkedEdgenum = 3;
VertexList[5].insertFirst(7,3,19.5,64.0,60.0,76.0);
VertexList[5].insertFirst(8,3,13,25.0,45.0,55.0);
VertexList[5].insertFirst(12,6,17.0,50.0,38.0,84.0);
VertexList[5].linkedEdgenum = 3;
VertexList[6].insertFirst(12,5,17.0,50.0,38.0,84.0);
VertexList[6].insertFirst(13,7,13.0,40.0,42.0,75.0);
VertexList[6].insertFirst(14,8,39.5,55.0,57.0,45.0);
VertexList[6].linkedEdgenum = 3;
VertexList[7].insertFirst(15,14,19.0,50.0,49.0,70.0);
VertexList[7].insertFirst(13,6,13.0,40.0,42.0,75.0);
VertexList[7].linkedEdgenum = 2;
VertexList[8].insertFirst(9,3,28.5,28.0,70.0,25.0);
VertexList[8].insertFirst(14,6,39.5,55.0,57.0,45.0);
VertexList[8].insertFirst(16,11,10.5,49.0,55.0,50.0);
VertexList[8].insertFirst(17,12,22.0,55.0,35.0,77.0);
VertexList[8].insertFirst(18,9,27.0,60.0,38.0,40.0);
VertexList[8].linkedEdgenum = 5;
VertexList[9].insertFirst(5,2,27.5,55.0,60.0,45.0);
VertexList[9].insertFirst(4,2,34.5,80.0,67.0,79.0);
VertexList[9].insertFirst(11,4,20.5,80.0,30.0,37.0);
VertexList[9].insertFirst(19,10,20.0,50.0,40.0,45.0);
VertexList[9].insertFirst(20,12,9.5,30.0,28.0,40.0);
VertexList[9].insertFirst(18,8,27.0,60.0,38.0,40.0);
VertexList[9].linkedEdgenum = 6;
VertexList[10].insertFirst(6,2,42.0,135.0,80.0,80.0);
VertexList[10].insertFirst(19,9,20.0,50.0,40.0,45.0);
VertexList[10].insertFirst(21,13,15.0,32.0,67.0,75.0);
VertexList[10].linkedEdgenum = 3;
VertexList[11].insertFirst(16,8,10.5,49.0,55.0,50.0);
VertexList[11].insertFirst(22,14,25.0,70.0,30.0,35.0);
VertexList[11].insertFirst(23,17,10.0,48.0,65.0,51.0);
VertexList[11].linkedEdgenum = 3;
VertexList[12].insertFirst(17,8,22.0,55.0,35.0,77.0);
VertexList[12].insertFirst(20,9,9.5,30.0,28.0,40.0);
VertexList[12].insertFirst(24,22,16.0,35.0,75.0,45.0);
VertexList[12].linkedEdgenum = 3;
VertexList[13].insertFirst(21,10,15.0,32.0,67.0,75.0);
VertexList[13].insertFirst(25,22,25.0,60.0,60.0,81.0);
VertexList[13].linkedEdgenum = 2;
VertexList[14].insertFirst(15,7,19.0,50.0,49.0,70.0);
VertexList[14].insertFirst(22,11,25.0,70.0,30.0,35.0);
VertexList[14].insertFirst(29,16,27.0,75.0,40.0,42.0);
VertexList[14].insertFirst(30,18,35.0,100.0,30.0,72.0);
VertexList[14].insertFirst(31,17,30.0,75.0,35.0,50.0);
VertexList[14].linkedEdgenum = 5;
VertexList[15].insertFirst(28,16,32.5,60.0,32.0,79.0);
VertexList[15].insertFirst(32,16,22.0,45.0,64.0,35.0);
VertexList[15].linkedEdgenum = 2;
VertexList[16].insertFirst(28,15,32.5,60.0,32.0,79.0);
VertexList[16].insertFirst(29,14,27.0,75.0,40.0,42.0);
VertexList[16].insertFirst(32,15,22.0,45.0,64.0,35.0);
VertexList[16].insertFirst(33,17,33.0,90.0,45.0,47.0);
VertexList[16].insertFirst(34,18,48.5,120.0,48.0,50.0);
VertexList[16].linkedEdgenum = 5;
VertexList[17].insertFirst(23,11,10.0,48.0,65.0,51.0);
VertexList[17].insertFirst(31,14,30.0,75.0,35.0,50.0);
VertexList[17].insertFirst(33,16,33.0,90.0,45.0,47.0);
VertexList[17].insertFirst(35,18,11.0,40.0,58.0,43.0);
VertexList[17].linkedEdgenum = 4;
VertexList[18].insertFirst(30,14,35.0,100.0,30.0,72.0);
VertexList[18].insertFirst(34,16,48.5,120.0,48.0,50.0);
VertexList[18].insertFirst(35,17,11.0,40.0,58.0,43.0);
VertexList[18].insertFirst(36,19,18.0,50.0,60.0,50.0);
VertexList[18].insertFirst(37,19,26.5,75.0,45.0,70.0);
VertexList[18].linkedEdgenum = 5;
VertexList[19].insertFirst(26,22,38.0,63.0,55.0,55.0);
VertexList[19].insertFirst(36,18,18.0,50.0,60.0,50.0);
VertexList[19].insertFirst(37,18,26.5,75.0,45.0,70.0);
VertexList[19].insertFirst(38,21,19.0,43.0,67.0,45.0);
VertexList[19].insertFirst(40,20,7.0,30.0,30.0,60.0);
VertexList[19].linkedEdgenum = 5;
VertexList[20].insertFirst(40,19,7.0,30.0,30.0,60.0);
VertexList[20].insertFirst(39,21,25.0,60.0,49.0,85.0);
VertexList[20].linkedEdgenum = 2;
VertexList[21].insertFirst(27,22,32.0,80.0,35.0,76.0);
VertexList[21].insertFirst(38,19,19.0,43.0,67.0,45.0);
VertexList[21].insertFirst(39,20,25.0,60.0,49.0,85.0);
VertexList[21].linkedEdgenum = 3;
VertexList[22].insertFirst(24,12,16.0,35.0,75.0,45.0);
VertexList[22].insertFirst(25,13,9.5,60.0,60.0,81.0);
VertexList[22].insertFirst(26,19,38.0,63.0,55.0,55.0);
VertexList[22].insertFirst(27,21,32.0,80.0,35.0,76.0);
VertexList[22].linkedEdgenum = 4;
}
public EdgeInfo[] ShortDFS( int start, int end )
{
int subRouteNum =0;
int n = 0;//the vertex No of the peek Vertex of the stack
int k = 0;//the Vertex No with the shortest distance
int i;
double s = 0.0;//the shortest distance
myStack theStack = new myStack();
Vertex v = new Vertex();
EdgeInfo[] edge;
VertexList[start].isVisited = true;
theStack.push(VertexList[start]);
//find a possible current shortest route
while(theStack.peek()!=VertexList[end])
{
n = theStack.peek().verNo;
s = getShortestUnvisitedDistance(n);
if (s == 0.0)//if no such vertex
{
theStack.pop();
}
else
{
k = getVertex(n,s);
// System.out.println("the linked vertex of the shortest is" + k);
VertexList[k].isVisited = true;
theStack.push(VertexList[k]);
}
}//end while
subRouteNum = theStack.gettop();
System.out.println(subRouteNum);
i = subRouteNum-1;
edge = new EdgeInfo[subRouteNum];
while(theStack.gettop()!= 0)
{
System.out.println("Fucking fucking fucking Jay");
EdgeInfo current = new EdgeInfo();
int o = 0;
int d = 0;
o = theStack.peek().verNo;
theStack.pop();
d = theStack.peek().verNo;
current = VertexList[o].firstEdge;
while(current!=null)
{
if(current.ToCity == d)
{
edge[i] = current;
System.out.println("The edge is" + edge[i].routeNo);
break;
}
else
{
current = current.nextEdge;
}
}
i--;
}
for(int j=1; j< NumOfVer; j++) // reset flags
VertexList[j].isVisited = false;
return edge;
}
/********************************************************************************
*Input: A vertex No, and a distance
*Output: The destination vertex No
*Function: Find the destination vertex No of the shortest unvisited Edge
*********************************************************************************/
public int getVertex(int v,double s)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -