struct Graph {
var numberOfNodes = 0
var adjacentList: [String: [String]] = [:]
mutating func addVertex(_ node: String) {
self.adjacentList[node] = []
numberOfNodes += 1
}
mutating func addEdge(_ node1: String, _ node2: String) {
if self.adjacentList[node1] != nil && self.adjacentList[node2] != nil {
self.adjacentList[node1]!.append(node2)
self.adjacentList[node2]!.append(node1)
}
}
func showConnections() -> String {
var showConnectionsString = ""
for (vertex, edges) in self.adjacentList {
showConnectionsString += "\(vertex) --> \(edges)\n"
}
return showConnectionsString
}
}
var myGraph = Graph()
myGraph.addVertex("0")
myGraph.addVertex("1")
myGraph.addVertex("2")
myGraph.addVertex("3")
myGraph.addVertex("4")
myGraph.addVertex("5")
myGraph.addVertex("6")
myGraph.addEdge("3", "1")
myGraph.addEdge("3", "4")
myGraph.addEdge("4", "2")
myGraph.addEdge("4", "5")
myGraph.addEdge("1", "2")
myGraph.addEdge("1", "0")
myGraph.addEdge("0", "2")
myGraph.addEdge("6", "5")
print(myGraph.showConnections())