# graph.py: graph class based on lists import sys class Graph(object): def __init__(self): self.__numV = 0 # num of vertices self.__g = [] # insert/put stuff ############### def insertVertex(self, d=None): self.__numV += 1 self.__g.append([d, []]) def insertEdge(self, u, v, d=None): self.__g[u][1].append([v,d]); def putVertexData(self, v, d): self.__g[v][0] = d def putEdgeData(self, u, v, d): for w in self.__g[u][1]: if w[0] == v: w[1] = d # get stuff ###################### def getNumV(self): return self.__numV def getVertexData(self, u): return self.__g[u][0] def getEdgeData(self, u, v): for w in self.__g[u][1]: if w[0] == v: return w[1] return None def getAdjList(self, u): x = [] for w in self.__g[u][1]: x.append(w[0]) return x # print stuff##################### def printGraph(self): sys.stdout.write("g =\n[\n") for i in range(len(self.__g)): sys.stdout.write(str(self.__g[i]) + " # " + str(i) + '\n') sys.stdout.write("]\n")