blob: a677d3e45168cbeb10321cae409e89b5eaff2f71 (
plain)
- 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
- public class AdjListGraph extends AbstractGraph {
- /// foo
- public 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;
- }
- }
|