Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
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