同步操作将从 编程语言算法集/Java 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package DataStructures.Graphs;import java.util.ArrayList;class AdjacencyListGraph<E extends Comparable<E>> {ArrayList<Vertex> verticies;public AdjacencyListGraph() {verticies = new ArrayList<>();}private class Vertex {E data;ArrayList<Vertex> adjacentVerticies;public Vertex(E data) {adjacentVerticies = new ArrayList<>();this.data = data;}public boolean addAdjacentVertex(Vertex to) {for (Vertex v : adjacentVerticies) {if (v.data.compareTo(to.data) == 0) {return false; // the edge already exists}}return adjacentVerticies.add(to); // this will return true;}public boolean removeAdjacentVertex(E to) {// use indexes here so it is possible to// remove easily without implementing// equals method that ArrayList.remove(Object o) usesfor (int i = 0; i < adjacentVerticies.size(); i++) {if (adjacentVerticies.get(i).data.compareTo(to) == 0) {adjacentVerticies.remove(i);return true;}}return false;}}/*** this method removes an edge from the graph between two specified verticies** @param from the data of the vertex the edge is from* @param to the data of the vertex the edge is going to* @return returns false if the edge doesn't exist, returns true if the edge exists and is removed*/public boolean removeEdge(E from, E to) {Vertex fromV = null;for (Vertex v : verticies) {if (from.compareTo(v.data) == 0) {fromV = v;break;}}if (fromV == null) return false;return fromV.removeAdjacentVertex(to);}/*** this method adds an edge to the graph between two specified verticies** @param from the data of the vertex the edge is from* @param to the data of the vertex the edge is going to* @return returns true if the edge did not exist, return false if it already did*/public boolean addEdge(E from, E to) {Vertex fromV = null, toV = null;for (Vertex v : verticies) {if (from.compareTo(v.data) == 0) { // see if from vertex already existsfromV = v;} else if (to.compareTo(v.data) == 0) { // see if to vertex already existstoV = v;}if (fromV != null && toV != null) break; // both nodes exist so stop searching}if (fromV == null) {fromV = new Vertex(from);verticies.add(fromV);}if (toV == null) {toV = new Vertex(to);verticies.add(toV);}return fromV.addAdjacentVertex(toV);}/*** this gives a list of verticies in the graph and their adjacencies** @return returns a string describing this graph*/@Overridepublic String toString() {StringBuilder sb = new StringBuilder();for (Vertex v : verticies) {sb.append("Vertex: ");sb.append(v.data);sb.append("\n");sb.append("Adjacent verticies: ");for (Vertex v2 : v.adjacentVerticies) {sb.append(v2.data);sb.append(" ");}sb.append("\n");}return sb.toString();}}public class Graphs {public static void main(String args[]) {AdjacencyListGraph<Integer> graph = new AdjacencyListGraph<>();assert graph.addEdge(1, 2);assert graph.addEdge(1, 5);assert graph.addEdge(2, 5);assert !graph.addEdge(1, 2);assert graph.addEdge(2, 3);assert graph.addEdge(3, 4);assert graph.addEdge(4, 1);assert !graph.addEdge(2, 3);System.out.println(graph);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。