// Copyright 2003, Trustees of Indiana University // Please see the license in the file ../LICENSE import java.util.*; import java.lang.Integer; public class adjacency_list implements VertexListAndIncidenceAndEdgeListGraph< Integer, adj_list_edge, Iterator, Iterator>, Iterator>> { public adjacency_list() { vertices_ = new ArrayList(); edges_ = new HashMap>>(); all_edges_ = new ArrayList>(); } private ArrayList vertices_; public Iterator vertices() { return vertices_.iterator(); } public int num_vertices() { return vertices_.size(); } private HashMap>> edges_; private ArrayList> all_edges_; public Iterator> out_edges(Integer v) { return edges_.get(v).iterator(); } public int out_degree(Integer v) { return edges_.get(v).size(); } public void add_vertex(Integer v) { vertices_.add(v); edges_.put(v, new ArrayList>()); } public void add_edge(Integer u, Integer v) { adj_list_edge edge = new adj_list_edge(u,v); edges_.get(u).add(edge); all_edges_.add(edge); } public Iterator> edges() { return all_edges_.iterator(); } }