def PQGivenVertex(self, orig, string): if string == "price": priorityQueue = PricePQ() else: priorityQueue = DistPQ() count = 0 if self.head is None: return None currentNode = self.head while currentNode is not None: if currentNode.orig == orig or currentNode.orig != orig: spareNode = currentNode while spareNode is not None: if spareNode.orig == orig: priorityQueue.add(Route(spareNode.orig, spareNode.dest, spareNode.distance, spareNode.price)) count += 1 spareNode = spareNode.nextHoriz currentNode = currentNode.nextVert if count > 0: return priorityQueue else: return None
def load(cities, cityMap, cityMapInvert, numberOfCities, fileName, list, distPQ, pricePQ): file = open(fileName, 'r+') numberOfCities = int(file.readline()) #read how many cities there are cities = [] cityMap = {} cityMapInvert = {} list = AdjacencyList() for i in range (1, numberOfCities+1): #read the names of the cities s = file.readline()[0:-1] cities.append(s) cityMap[s] = int(i) cityMapInvert[i] = s distPQ = DistPQ() pricePQ = PricePQ() while True: #read the route information s = file.readline() if not s: file.close() break s = s[0:-1] split = re.split('\s+', s) try: list.add(Route(int(split[0]), int(split[1]), float(split[2]), float(split[3]))) list.add(Route(int(split[1]), int(split[0]), float(split[2]), float(split[3]))) distPQ.add(Route(int(split[0]), int(split[1]), float(split[2]), float(split[3]))) pricePQ.add(Route(int(split[0]), int(split[1]), float(split[2]), float(split[3]))) except: file.close() break return cities, cityMap, cityMapInvert, numberOfCities, fileName, list, distPQ, pricePQ