⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 creategraphic.java

📁 Create the Northern Ireland graphic
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//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 + -