Repeat Programming Problems 1 and 2, but allow the graph to be either weighted or unweighted and either directed or undirected.
Programming Problems 1:
Write a C++ class derived from Graph Interface, as given in Listing 20-1. Use an adjacency matrix to represent the graph. Programming Problems 2:
Repeat the previous programming problem, but represent the graph using an adjacency list instead of an adjacency matrix.