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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? generalgraph.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;

import java.util.Vector;
public class GeneralGraph {
	private boolean isDirected;//whether the graph is directed or not
	private Vector<Vertex> graph;
	public GeneralGraph(){
		/* use adjacency list to implement the graph use data structure is vector
		 * */
		this.graph = new Vector<Vertex>();
		this.isDirected = false;//default is a undirected graph
	}
	
	public GeneralGraph(boolean bool){
		/* use adjacency list to implement the graph use data structure is vector
		 * */
		this.graph = new Vector<Vertex>();
		this.isDirected = bool;//whether the graph is directed or not
	}
	
	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 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 Integer Degree(Vertex v){
		if(!isDirected){
			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 outDegree(Vertex v){
		if(isDirected){
			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(isDirected){
			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;
			}
		}
		return null;
	}
	
	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;
	}
	
	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 (!isDirected){
				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
							||((!isDirected) && headVertex.getIncidentEdges().get(j).getOriginVertex() ==v))
						headVertex.getIncidentEdges().remove(j);
				}
			}

		}
	}
	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 ==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());
				}
				
			}
		}
		//if the graph is undirected, the edge list of v contain all the edge incident to v
		//else if the graph is directed, then add all the edge which destiny is v to the result
		if (isDirected){
			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);
			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;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频中文字幕一区二区| 免费成人小视频| 久久久一区二区三区捆绑**| 8x8x8国产精品| 欧美视频在线一区二区三区| 欧美日韩美女一区二区| 欧美老肥妇做.爰bbww视频| 欧美老肥妇做.爰bbww| 91精品婷婷国产综合久久竹菊| 在线电影国产精品| 精品成a人在线观看| 久久久一区二区三区| 国产精品区一区二区三区| 自拍av一区二区三区| 夜夜嗨av一区二区三区中文字幕 | 国产日韩亚洲欧美综合| 国产欧美一区二区精品秋霞影院 | 成人美女在线观看| a美女胸又www黄视频久久| zzijzzij亚洲日本少妇熟睡| 99re66热这里只有精品3直播 | 91麻豆精品国产自产在线 | 久草热8精品视频在线观看| 蜜桃视频在线一区| 成人一级视频在线观看| 日本道在线观看一区二区| 欧美精品精品一区| 久久一留热品黄| 最新中文字幕一区二区三区| 午夜精品久久久久久久久| 久久99精品国产麻豆不卡| 丰满亚洲少妇av| 欧美日韩一区在线观看| 久久久久久久久伊人| 亚洲精品亚洲人成人网| 久久国产生活片100| 91伊人久久大香线蕉| 在线综合+亚洲+欧美中文字幕| 欧美极品少妇xxxxⅹ高跟鞋| 丝瓜av网站精品一区二区| 国产成人自拍网| 欧美日精品一区视频| 久久精品这里都是精品| 亚洲一二三四在线| 成人在线视频一区二区| 欧美精品v国产精品v日韩精品| 欧美国产日韩一二三区| 日本欧美肥老太交大片| 色哟哟亚洲精品| 久久久久久日产精品| 性欧美大战久久久久久久久| 成人午夜激情在线| 精品久久久网站| 亚洲一二三四区| 色综合视频一区二区三区高清| 精品国产一区二区三区久久久蜜月 | 亚洲一二三四在线| 91免费视频网| 欧美国产一区在线| 国产毛片精品国产一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲欧美偷拍三级| 成人av网址在线| 欧美极品xxx| 国产不卡在线视频| 久久免费偷拍视频| 麻豆91在线看| 91精品久久久久久久91蜜桃 | 91精品在线一区二区| 亚洲精品国产一区二区三区四区在线| 国产精品中文有码| 久久久久国产精品厨房| 精品综合免费视频观看| 精品嫩草影院久久| 久久99精品国产麻豆婷婷| 欧美成人伊人久久综合网| 男男视频亚洲欧美| 日韩欧美123| 青青草视频一区| 日韩欧美区一区二| 麻豆中文一区二区| 欧美成人a∨高清免费观看| 久久成人羞羞网站| 久久久亚洲综合| 成人美女视频在线看| 亚洲欧美激情视频在线观看一区二区三区 | 欧美日韩精品免费| 日本少妇一区二区| 久久久美女毛片| 成人中文字幕在线| 亚洲伦理在线精品| 欧美美女网站色| 激情五月婷婷综合网| 国产区在线观看成人精品| av电影一区二区| 一区二区三区久久久| 欧美一级免费大片| 国产成人精品www牛牛影视| 国产精品国产三级国产a| 色国产精品一区在线观看| 亚洲大片免费看| 久久亚洲综合色| 色视频欧美一区二区三区| 同产精品九九九| 久久精品免费在线观看| 91黄色激情网站| 久久99精品国产麻豆婷婷| 亚洲欧洲国产日韩| 欧美一区二区在线播放| 国产suv精品一区二区883| 亚洲与欧洲av电影| www国产精品av| 色天天综合久久久久综合片| 美女视频一区二区三区| 国产精品久久一级| 日韩视频在线一区二区| 9色porny自拍视频一区二区| 亚洲国产日韩av| 国产亚洲人成网站| 91麻豆精品91久久久久久清纯| 成人免费毛片高清视频| 奇米精品一区二区三区在线观看一| 中文字幕精品一区二区精品绿巨人 | 久久精品一区二区三区四区 | 日本麻豆一区二区三区视频| 国产日产欧美一区| 欧美高清视频一二三区 | 91亚洲精品久久久蜜桃网站| 麻豆91精品视频| 亚洲欧美经典视频| 国产精品乱码妇女bbbb| 欧美变态tickle挠乳网站| 在线亚洲人成电影网站色www| 精品中文字幕一区二区| 日韩高清欧美激情| 亚洲图片欧美色图| 一区二区三区中文字幕电影| 国产欧美一区二区精品性色超碰| 91精品国产综合久久久蜜臀粉嫩| www.亚洲在线| 国产黄人亚洲片| 久久福利视频一区二区| 图片区小说区区亚洲影院| 一区二区三区波多野结衣在线观看| 国产日本欧洲亚洲| 国产网站一区二区| 久久久久国产精品厨房| 久久夜色精品一区| 久久久久久免费| 久久精品欧美一区二区三区不卡 | 精品久久一区二区三区| 日韩欧美国产综合一区| 欧美精品xxxxbbbb| 91精品国产高清一区二区三区蜜臀| 在线看国产日韩| 欧洲精品一区二区三区在线观看| 91免费在线看| 欧美日韩一区二区三区不卡| 欧美日韩一区二区三区在线| 欧美视频一二三区| 欧美群妇大交群中文字幕| 欧美日韩久久久久久| 这里只有精品视频在线观看| 日韩女优电影在线观看| 国产午夜精品久久久久久免费视 | av电影在线不卡| 在线看国产一区| 欧美疯狂做受xxxx富婆| 日韩欧美在线123| 久久久不卡影院| 中文字幕制服丝袜成人av| 亚洲一区二区不卡免费| 麻豆91免费看| 成人精品免费视频| 在线欧美日韩国产| 欧美一三区三区四区免费在线看| 欧美一卡2卡3卡4卡| 久久久九九九九| 亚洲少妇30p| 日本不卡中文字幕| 成人污污视频在线观看| 欧美无人高清视频在线观看| 欧美sm极限捆绑bd| 国产精品久久久久精k8| 亚洲高清免费观看| 国产精品综合久久| 色av一区二区| 欧美一区二区在线观看| 国产精品久久久久久久久免费相片| 亚洲一区二区三区在线播放| 久久 天天综合| 欧美中文一区二区三区| 久久在线观看免费| 有码一区二区三区| 久久99精品国产.久久久久| 欧美写真视频网站| 中文字幕 久热精品 视频在线 | 7777精品伊人久久久大香线蕉的| 欧美大片在线观看一区二区| 2020国产精品久久精品美国|