为算法考试做准备--图论顶点定义实现

来源:互联网 发布:informix数据库下载 编辑:程序博客网 时间:2024/05/05 02:32
package utils;public class MyVertex<T> {private T value;private boolean visited;private MyArrayList<MyEdge<T>> adjEdges;//以本顶点为起点的边private int inDegree;//入度,即有多少边以此顶点作为终点private int topNum; //拓扑排序的编号public MyVertex(T v) {value = v;}public void setValue(T v) {value = v;}public T getValue() {return value;}public void setVisited(boolean visited) {this.visited = visited;}public boolean ifVisited() {return visited;}public void setInDegree(int indegree) {inDegree = indegree;}public int getInDegree() {return inDegree;}public void setTopNum(int topNum) {this.topNum = topNum;}public int getTopNum() {return topNum;}public void addAdjEdge(MyEdge<T> edge) {if (adjEdges == null) {adjEdges = new MyArrayList<MyEdge<T>>();}adjEdges.add(edge);//增加边终点的入度edge.eVert.inDegree++;}public int getEdgeNum() {if (adjEdges == null) return 0;return adjEdges.size();}public MyEdge<T> getEdge(int idx) {if (adjEdges == null) return null;return adjEdges.get(idx);}public MyEdge<T> getEdge(MyVertex<T> eVert) {MyEdge<T> result = null;for (int i = 0; i < adjEdges.size(); ++i) {if (adjEdges.get(i).eVert.equals(eVert)) {result = adjEdges.get(i);break;}}return result;}public MyEdge<T> removeEdge(MyVertex<T> eVert) {MyEdge<T> result = null;for (int i = 0; i < adjEdges.size(); ++i) {if (adjEdges.get(i).eVert.equals(eVert)) {result = adjEdges.remove(i);//减少边终点的入度result.eVert.inDegree--;break;}}return result;}@Overridepublic int hashCode() {int result = 0;result = 37 * result + value.hashCode();return result;}@Overridepublic boolean equals(Object obj) {if (!(obj instanceof MyVertex)) {return false;}if (value.equals(((MyVertex<T>)obj).value)) {return true;}return false;}}

0 0
原创粉丝点击