1. What is an Abstract Data Type (ADT) for? Illustrate answer with any particular ADT.
2. write out in pseudocode an algorithm to perform a depth-first search for a directed, unweighted graph.
3. Describe two ways in which a graph might be implemented, and explain the main differences between them. Also discuss the circumstances in which you would choose each one.