亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? undirectedgraph.java

?? Specification File adjacencyListGragh class GeneralGraph: use adjacency list to implement the gr
?? JAVA
字號:
/*
Accessor methods:
* endVertices(e): an array of the two endvertices of e
* opposite(v, e): the vertex opposite of v on e
* areAdjacent(v, w): true iff v and w are adjacent
* replace(v, x): replace element at vertex v with x
* replace(e, x): replace element at edge e with x

Update methods :
* insertVertex(o): insert a vertex storing element o
* insertEdge(v, w, o): insert an edge (v,w) storing element o
* removeVertex(v): remove vertex v (and its incident edges)
* removeEdge(e): remove edge e

Iterator methods:
* incidentEdges(v): edges incident to v
* vertices(): all vertices in the graph
* edges(): all edges in the graph
*/
package adjacencyListGragh;
/* It is a UnDirected Graph using an Adjacency List structure.*/
import java.util.Vector;
public class UnDirectedGraph {
	/* creat a graph list table use Vector, 
	 * graph is a vertex list store the all the 
	 * vertex in the graph, and every vertex has
	 * the property incident edges which is stored
	 * in a Vector, so in all the graph contain two
	 * list, one is vertex list, the other is the 
	 * edge list*/
	private Vector<Vertex> graph;

	public UnDirectedGraph(){
		this.graph = new Vector<Vertex>();
		/* use adjacency list to implement the graph use data structure is vector
		 * */
	}
	
	public Vertex[] endVertices(Edge edge){
		Vertex[] result = new Vertex[2];
		/*store the result in an array which type is Vertex*/
		result[0] = edge.getOriginVertex();
		result[1] = edge.getDestinyVertex();
		/*if the edge doesn't exist, it will return null, 
		 * this will be helpful in the following method opposite()*/
		return result;
	}
	
	public Vertex opposite(Vertex v , Edge e ){
		//v is one end of the edge e 
		Vertex[] vertices = this.endVertices(e);
		if (vertices[0] == v){
			return vertices[1];
		}
		else if (vertices[1] == v){
			return vertices[0];
		}
		//if e does not exist, return null
		else 
			return null;
	}
	
	public Integer Degree(Vertex v){
		Vertex headVertex = graph.get(0);
		for ( int i=0; i < graph.size();i++){
			headVertex = graph.get(i);
			if (headVertex == v)
				return headVertex.getIncidentEdges().size();
		}
		return null;
	}
	
	public boolean areAdjacent(Vertex v , Vertex w ){
		Vertex headVertex = graph.get(0);//initialize the headVertex from the beginning element
			
		//get the head position of v in the headVertex of the adjacency list 
		for ( int i=0; i < graph.size();i++){
			/*if the v is the origin vertex, w is the destiny*/
			headVertex = graph.get(i);//get w in the the adjacency list of v
			if (headVertex == v){
				for (int j=0 ;j < headVertex.getIncidentEdges().size() ;j++){
					if (headVertex.getIncidentEdges().get(j).getDestinyVertex() == w) return true;
				}
			}
			/*if the v is the destiny vertex, w is the origin*/
			if (headVertex == w){
				for (int j=0 ;j < headVertex.getIncidentEdges().size() ;j++){
					if (headVertex.getIncidentEdges().get(j).getDestinyVertex() == v) return true;
				}
			}
		}
		return false;
	}
	
	public void replace(Edge e , Object element){
		e.setElement(element);
	}
	
	public void replace(Vertex v , Object element){
		v.setElement(element);
	}
	
	public Vertex insertVertex(Object element){
		Vertex headVertex = new Vertex(element);
		graph.add(headVertex);
		return headVertex;
	}
	
		/* because the graph is undirected, so we will insert 
		 * the ege to both vertex list related:
		 * insert a edge v and w, determine whether the 
		 * insertion is succeed, may be the vertex doesn't exist*/
	public Edge insertEdge(Vertex v , Vertex w, Object element){
		Edge edge = new Edge( v , w , element);
		Vertex headVertex = graph.get(0);//initialize the headVertex from the beginning element
		
		for ( int j=0; j< graph.size();j++){
		
			headVertex = graph.get(j);
			// find the head position of vertex v to insert
			if (headVertex == v){
				headVertex.getIncidentEdges().add(edge);
			}
			// find the head position of vertex w to insert
			if (headVertex == w){
				headVertex.getIncidentEdges().add(edge);
			}
		}
		return edge;
	}

	public void removeVertex(Vertex v){
		/* when we remove a vertex v we have to remove all the edge
		 * which destiny is v, also we should remove all the edge
		 * which is orginate from v(that is to say we remove the 
		 * headVertex in the graph list);
		 * */
		Vertex headVertex = graph.get(0);//initialize the headVertex from the beginning element
		for (int i = 0; i< graph.size();i++){
			headVertex = graph.get(i);
			//remove all the edge which is orginate from v
			if (headVertex == v)
				graph.remove(i);
			//remove all the edge which destiny is v
			else{
				for (int j=0; j<headVertex.getIncidentEdges().size(); j++){
					if (headVertex.getIncidentEdges().get(j).getDestinyVertex() == v
							||headVertex.getIncidentEdges().get(j).getOriginVertex() ==v)
						headVertex.getIncidentEdges().remove(j);
				}
			}

		}
	}
	
	/* remove a edge in graph, determine whether the 
	 * remove is succeed*/
	public void removeEdge(Edge e){
		Vertex headVertex = graph.get(0);
		for ( int i=0; i< graph.size();i++){
			headVertex = graph.get(i);
			// find one edge of e in the graph list
			if (headVertex == e.getOriginVertex() || headVertex == e.getDestinyVertex()){
				for (int j=0 ;j<headVertex.getIncidentEdges().size();j++){
					// find another edge of e in the edge list
					if (headVertex.getIncidentEdges().get(j) ==e){
						headVertex.getIncidentEdges().remove(j);
					}
				}
			}
			
		}
	}
	
	public Vector<Edge> incidentEdges(Vertex v){
		Vertex headVertex = graph.get(0);
		Vector<Edge> result = new Vector<Edge>();//result stored in a vector
		//add all the edge which is orginate from v to the result
		for (int i=0; i< graph.size();i++){
			headVertex = graph.get(i);
			if(headVertex == v){
				if(headVertex.getIncidentEdges().isEmpty())	//v is a trivial vertex
					return null;
				/*else{					//v has incident edges
					for (int j=0; j< headVertex.getIncidentEdges().size();j++){
						result.add(headVertex.getIncidentEdges().get(j));
					}
				}*/
				else{					//v has incident edges
					result.addAll(headVertex.getIncidentEdges());
				}
				
			}
		}
		return result;
	}
	
	public Vector<Vertex> vertices(){
		return graph;
	}
	
	public Vector<Edge> edges(){
		Vertex headVertex = graph.get(0);
		Vector<Edge> result = new Vector<Edge>();//result stored in a vector
		for (int i=0 ;i< graph.size();i++){
			headVertex = graph.get(i);
			for (int j=0; j< headVertex.getIncidentEdges().size();j++){
				if (!headVertex.getIncidentEdges().get(j).printed){
					result.add(headVertex.getIncidentEdges().get(j));
					headVertex.getIncidentEdges().get(j).printed = true; 
				}
			}
		}
		for (int i=0 ;i< graph.size();i++){
			for (int j=0; j< graph.get(i).getIncidentEdges().size();j++){
				graph.get(i).getIncidentEdges().get(j).printed = false; 
			}
		}
		return result;
	}
		
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内外成人在线| 一区二区三区欧美日| 日韩精彩视频在线观看| 欧美日韩中字一区| 亚洲一区视频在线观看视频| 99re66热这里只有精品3直播| 亚洲欧洲精品一区二区精品久久久| 国产寡妇亲子伦一区二区| 精品国产乱码久久久久久浪潮| 中文幕一区二区三区久久蜜桃| av一区二区不卡| 亚洲色欲色欲www| 91麻豆视频网站| 婷婷中文字幕综合| 91 com成人网| 久久精品国产99| 久久精品免费在线观看| 成人午夜激情在线| 亚洲少妇最新在线视频| 欧美日韩视频一区二区| 日本欧美加勒比视频| 日韩欧美的一区| 成人动漫中文字幕| 亚洲欧洲美洲综合色网| 国内精品国产成人| 亚洲国产岛国毛片在线| www.成人网.com| 国产精品国产a| 欧美色图12p| 国产综合久久久久久鬼色| 欧美高清在线一区| 欧美片网站yy| 国产精品一区免费视频| 亚洲精品欧美激情| 91在线观看成人| 午夜精品一区二区三区三上悠亚| 日韩无一区二区| 国产精品888| 伊人色综合久久天天| 日韩精品自拍偷拍| 成人毛片老司机大片| 中文字幕制服丝袜成人av| 欧美日韩夫妻久久| 国产美女视频91| 亚洲伦理在线精品| 欧美日韩成人高清| 全部av―极品视觉盛宴亚洲| 欧美激情资源网| 欧美亚洲图片小说| 成人av网站在线| 欧美色成人综合| 精东粉嫩av免费一区二区三区| 一区二区三区蜜桃网| 日韩欧美一区二区不卡| va亚洲va日韩不卡在线观看| 精彩视频一区二区三区| 精品在线免费观看| 日韩一区在线免费观看| 3d成人动漫网站| 91香蕉视频在线| 免费不卡在线视频| 亚洲精品视频在线| 国产偷国产偷精品高清尤物| 亚洲成人动漫在线观看| 欧美mv日韩mv| 91成人在线免费观看| 成人精品视频一区二区三区尤物| 午夜av电影一区| 中文字幕一区二区三区av| 日韩欧美电影一区| 成人免费视频视频| 狠狠色丁香久久婷婷综| 婷婷丁香久久五月婷婷| 国产欧美一区二区精品性色超碰| 91丨九色丨尤物| 成人性生交大合| 国产一区在线观看视频| 免费高清在线一区| 日韩一区精品字幕| 亚洲综合久久久久| 亚洲国产精品人人做人人爽| 亚洲欧美日韩久久精品| 国产亚洲成年网址在线观看| 久久久久一区二区三区四区| 中文字幕一区二区三区视频| 亚洲人一二三区| 2020国产精品| 欧美精品一二三| 欧美男女性生活在线直播观看| 97精品久久久久中文字幕| 色综合久久66| 国产精品综合在线视频| www.欧美.com| 亚洲成人激情自拍| 午夜a成v人精品| 一区二区三区在线观看视频| 韩国成人福利片在线播放| 狠狠色狠狠色综合日日91app| 日韩国产精品大片| 美女看a上一区| 国产一区91精品张津瑜| 国产成人免费视频一区| 国产中文一区二区三区| 国产福利精品导航| 成人一级黄色片| 岛国av在线一区| www.在线欧美| 色综合色狠狠综合色| 欧美一区二区视频在线观看| 精品日产卡一卡二卡麻豆| 精品国产乱码久久久久久牛牛 | 国产一区免费电影| 久草中文综合在线| 91蜜桃免费观看视频| 91精彩视频在线| 在线不卡a资源高清| 久久日韩粉嫩一区二区三区| 精品国产91亚洲一区二区三区婷婷| 亚洲午夜视频在线| 日韩国产精品91| av亚洲精华国产精华| 91免费版在线看| 波多野结衣欧美| 精品视频999| 欧美α欧美αv大片| 欧美国产在线观看| 亚洲欧美电影院| 国产精品18久久久| 欧美亚洲日本国产| 亚洲激情图片一区| 精品日韩成人av| 亚洲色图丝袜美腿| 天堂影院一区二区| 国产麻豆一精品一av一免费 | av男人天堂一区| 91性感美女视频| 久久久久国产精品人| 一区二区三区蜜桃网| 成人毛片在线观看| 欧美精品三级日韩久久| 精品少妇一区二区三区日产乱码| 国产精品免费aⅴ片在线观看| 国产精品污网站| 日韩精品国产欧美| 成人黄色大片在线观看| 欧美电影免费观看高清完整版在线观看| 日本一区二区免费在线观看视频| 欧美一级黄色录像| 亚洲欧美日韩精品久久久久| 美女视频黄 久久| 成人午夜视频免费看| 欧美一级日韩一级| 亚洲美女视频在线| 不卡高清视频专区| 日韩免费视频一区| 亚洲欧洲精品一区二区三区不卡| 国产精品99久久久久久有的能看| 欧美日韩中文另类| 亚洲图片欧美色图| www.99精品| 久久综合成人精品亚洲另类欧美| 美女国产一区二区| 欧美日韩高清在线播放| 亚洲综合图片区| 波多野结衣亚洲| 欧美激情一区二区在线| 国产精品一区不卡| 日韩一级免费一区| 中文字幕一区二区视频| 国产69精品久久99不卡| 91精品国产综合久久小美女| 亚洲成人福利片| 精品1区2区3区| 国产精品成人在线观看| 欧美va亚洲va国产综合| 午夜久久电影网| 91精品国产综合久久精品麻豆| 亚洲精品中文在线| 国产乱子伦视频一区二区三区| 国产色产综合产在线视频| 久久99久久99小草精品免视看| 日韩欧美色电影| 久草这里只有精品视频| 欧美电影免费观看高清完整版在线观看| 久久精品国产一区二区三| 欧美一区二区三区精品| 夜夜亚洲天天久久| 欧美唯美清纯偷拍| 亚洲成人一区二区| 精品剧情v国产在线观看在线| 麻豆国产精品777777在线| 欧美人牲a欧美精品| 强制捆绑调教一区二区| 日韩美女视频一区二区在线观看| 国产在线一区观看| 国产亚洲精品精华液| 91免费看片在线观看| 亚洲一卡二卡三卡四卡无卡久久 | 欧美性欧美巨大黑白大战| 亚洲高清免费视频|