adjacency list using an array of hash tables instead, which allow for efficient insertion and lookup operations (unless we get unlucky and encounter tons of collisions, which is always a possibility).</li>
</ul>
</ul>
<ul>
<ul>
<li>If we have a dense graph, each list can tend toward a length of O(n) (where <em>n</em> is the number of vertices in our graph). A collection of <em>n</em> such lists gives an overall space complexity of O(n<sup>2</sup>), but with the added overhead of lots of pointers (if using l