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

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

?? directedgraph.java

?? Specification File adjacencyListGragh class GeneralGraph: use adjacency list to implement the gr
?? JAVA
字號(hào):
/*
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 Directed Graph using an Adjacency List structure.*/
import java.util.Vector;
public class DirectedGraph {
	/* 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 DirectedGraph(){
		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 outDegree(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 Integer inDegree(Vertex v){
		int degree = 0;
		if (v!=null){
			Vertex headVertex = graph.get(0);
			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).getDestinyVertex() == v)
						degree++;
				}
			}
			return degree;
		}
		else 
			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;
	}
	
		/* insert a edge from v to 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
		// find the head position to insert
		for ( int j=0; j< graph.size();j++){
			headVertex = graph.get(j);
			if (headVertex == v){
				headVertex.getIncidentEdges().add(edge);
				//return 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);
				i--;//because the vector's length is changing at the same time
			}
			//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().remove(j);
				}
			}

		}
	}
	
	/* remove a edge in graph, determine whether the 
	 * remove is succeed*/
	public boolean 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()){
				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);
						return true;
					}
				}
			}
		}
		return false;
	}
	
	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 ==null)	//v is not existed
					return null;
				else 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());
				}
				
			}
		}
		//add all the edge which destiny is v to the result
		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).getDestinyVertex() == v){
					result.add(headVertex.getIncidentEdges().get(j));
				}
			}
		}
		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);
			result.addAll(headVertex.getIncidentEdges());
		}
		return result;
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩麻豆91| 欧美xxxxx牲另类人与| 国产精品每日更新在线播放网址 | 亚洲少妇中出一区| 本田岬高潮一区二区三区| 国产精品久久久久久亚洲毛片| 不卡在线视频中文字幕| 中文字幕一区二区三区乱码在线 | 国产麻豆成人传媒免费观看| 久久久青草青青国产亚洲免观| 粉嫩在线一区二区三区视频| 亚洲欧美韩国综合色| 欧美精品 日韩| 久久av老司机精品网站导航| 久久久久久久久久久久久女国产乱| 国产91精品欧美| 一区二区三区加勒比av| 日韩欧美一区在线| 成人av在线播放网址| 亚洲一区二区免费视频| 日韩欧美国产成人一区二区| 成人久久18免费网站麻豆| 亚洲综合色视频| 精品盗摄一区二区三区| 91麻豆福利精品推荐| 日本网站在线观看一区二区三区| 久久久亚洲高清| 国产精品国产三级国产普通话蜜臀| 99视频在线观看一区三区| 亚洲国产精品久久一线不卡| 欧美精品一区二区久久婷婷 | 黄色日韩网站视频| 一区二区三区四区视频精品免费 | 国产亚洲视频系列| 欧美少妇性性性| 国产精品1区2区| 亚洲v日本v欧美v久久精品| 国产欧美一区在线| 91精品黄色片免费大全| 99国产精品久久| 精品一区二区三区久久久| 亚洲精品老司机| 国产无人区一区二区三区| 欧美日韩精品一区二区三区蜜桃| 国产精品香蕉一区二区三区| 日韩国产欧美三级| 亚洲丝袜另类动漫二区| 久久免费看少妇高潮| 欧美老肥妇做.爰bbww| 成人毛片老司机大片| 激情小说欧美图片| 亚洲成a人v欧美综合天堂下载| 国产精品嫩草影院com| 日韩欧美激情在线| 91麻豆精品国产91久久久| 色哟哟国产精品| 成人三级在线视频| 国产精品资源在线| 精品亚洲成a人| 免费在线观看一区| 亚洲成人资源网| 一区二区三区色| 综合激情成人伊人| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品视频看| 久久老女人爱爱| www日韩大片| 欧美变态tickling挠脚心| 欧美一级二级在线观看| 欧美日韩国产一二三| 欧美群妇大交群中文字幕| 在线观看成人免费视频| 日本高清无吗v一区| 91浏览器入口在线观看| 99国产精品一区| 色综合久久中文字幕综合网| 99re6这里只有精品视频在线观看| 国产福利一区在线| 国产91色综合久久免费分享| 国产精品亚洲专一区二区三区 | 国内成+人亚洲+欧美+综合在线 | 一区二区三区自拍| 亚洲精品videosex极品| 亚洲精品国产一区二区精华液 | 国产丝袜欧美中文另类| 中文成人av在线| 亚洲欧美一区二区三区极速播放 | 欧美日韩成人综合| 欧美高清www午色夜在线视频| 51精品国自产在线| 精品国产91乱码一区二区三区| 日韩手机在线导航| 26uuu色噜噜精品一区二区| 久久久精品国产免费观看同学| 国产色91在线| 伊人性伊人情综合网| 亚洲va在线va天堂| 国产资源在线一区| 成人综合婷婷国产精品久久蜜臀| 91一区二区在线| 欧美美女喷水视频| 久久免费视频色| 亚洲精品国产视频| 日本成人在线一区| 成人综合婷婷国产精品久久蜜臀| 日本大香伊一区二区三区| 欧美精品粉嫩高潮一区二区| 久久久蜜桃精品| 一区二区免费在线| 激情深爱一区二区| 91在线视频观看| 日韩一区二区在线观看| 国产精品久久影院| 日韩黄色片在线观看| 国产成人亚洲综合a∨婷婷 | 国产精品亲子伦对白| 亚洲一区二区在线播放相泽| 麻豆精品一区二区三区| 99精品一区二区| 日韩欧美在线网站| 一区二区三区免费| 国产风韵犹存在线视精品| 欧美一a一片一级一片| 久久久三级国产网站| 亚洲成人综合在线| 成人a级免费电影| 日韩一区二区电影网| 亚洲欧美激情插 | 9l国产精品久久久久麻豆| 欧美一级在线免费| 亚洲主播在线播放| 欧美成人福利视频| 亚洲一区二区影院| av男人天堂一区| 精品电影一区二区三区| 亚洲成av人影院| 91在线视频网址| 国产精品午夜久久| 国产一区激情在线| 91精品国产综合久久婷婷香蕉 | 国产精品你懂的在线| 久久99精品久久久久| 日本福利一区二区| 中文字幕在线观看一区| 国产精品资源在线| 精品成人在线观看| 免费观看日韩av| 欧美三日本三级三级在线播放| 国产精品高清亚洲| 国产99久久久国产精品| 久久综合九色综合欧美98| 另类的小说在线视频另类成人小视频在线| 91美女片黄在线观看91美女| 欧美国产日韩精品免费观看| 国产麻豆91精品| 久久影视一区二区| 精品一区二区三区欧美| 日韩一级二级三级| 欧美aⅴ一区二区三区视频| 精品视频在线免费看| 亚洲一区在线观看网站| 91福利区一区二区三区| 亚洲摸摸操操av| 一本色道久久综合狠狠躁的推荐 | 欧美在线一区二区三区| 亚洲精品自拍动漫在线| 一本到高清视频免费精品| 中文字幕制服丝袜一区二区三区| 国产91丝袜在线播放| 亚洲国产成人私人影院tom| 国产成人精品影院| 欧美激情一区在线观看| 99久久久精品免费观看国产蜜| 国产精品久久久久影院| 99久久精品国产一区二区三区| 国产精品久久久久天堂| 91色|porny| 亚洲成人免费在线| 555www色欧美视频| 精品无人区卡一卡二卡三乱码免费卡 | 舔着乳尖日韩一区| 日韩精品资源二区在线| 国产在线播放一区| 国产精品情趣视频| 欧洲在线/亚洲| 久久国产欧美日韩精品| 欧美国产精品中文字幕| 91网站黄www| 日韩精品一级中文字幕精品视频免费观看| 在线不卡免费av| 狠狠网亚洲精品| 成人欧美一区二区三区白人| 色综合天天综合给合国产| 舔着乳尖日韩一区| 精品亚洲porn| 中文字幕中文乱码欧美一区二区| 91黄色在线观看| 久久国产成人午夜av影院| 国产精品久久久久久久裸模| 欧美视频一区在线|