aboutsummaryrefslogtreecommitdiff
path: root/com/example/portfolio3/AdjListGraph.java
diff options
context:
space:
mode:
Diffstat (limited to 'com/example/portfolio3/AdjListGraph.java')
-rw-r--r--com/example/portfolio3/AdjListGraph.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/com/example/portfolio3/AdjListGraph.java b/com/example/portfolio3/AdjListGraph.java
new file mode 100644
index 0000000..416f646
--- /dev/null
+++ b/com/example/portfolio3/AdjListGraph.java
@@ -0,0 +1,47 @@
+package com.example.portfolio3;
+
+// origin: <https://moodle.ruc.dk/course/section.php?id=211877>
+
+import java.util.*;
+
+/// Adjecency List Graph - A map from vertices to set of outedges from the vertex
+class AdjListGraph extends AbstractGraph {
+
+ /// foo
+ AdjListGraph() {}
+
+ /// foo
+ private Map<Vertex,Set<Edge>> outEdge= new HashMap<>();
+
+ /// foo
+ public void insertEdge(Vertex v1,Vertex v2,int w){
+ Edge e=new Edge(v1,v2,w);
+ if(!outEdge.containsKey(e.from()))
+ outEdge.put(e.from(),new HashSet<Edge>());
+ outEdge.get(e.from()).add(e);
+ }
+
+ /// foo
+ public Collection<Edge> edges(){
+ Set<Edge> edges=new HashSet<>();
+ for(Vertex v:outEdge.keySet())edges.addAll(outEdge.get(v));
+ return edges;
+ }
+
+ /// foo
+ public Collection<Edge> outEdge(Vertex v){
+ if(!outEdge.containsKey(v))
+ return new HashSet<Edge>();
+ return outEdge.get(v);
+ }
+
+ /// foo
+ public Integer getWeight(Vertex v1,Vertex v2){
+ // linear in number of outedges from vertices
+ if(!outEdge.containsKey(v1))return null;
+ for(Edge e:outEdge.get(v1)){
+ if(e.to()==v2)return e.weight();
+ }
+ return null;
+ }
+}