Untitled
unknown
plain_text
a year ago
1.6 kB
3
Indexable
class queue: class current_vertex: data = None pointer = None front_pointer = None back_pointer = None def enqueue(self,item): #Check queue overflow try: #Push the item new_current_vertex = queue.current_vertex() new_current_vertex.data = item #Empty queue if self.back_pointer == None: self.front_pointer = new_current_vertex else: self.back_pointer.pointer = new_current_vertex self.back_pointer = new_current_vertex return True except: return False def dequeue(self): #Check queue underflow if self.front_pointer != None: #Dequeue the item popped = self.front_pointer.data self.front_pointer = self.front_pointer.pointer #When the last item is dequeued reset the pointers if self.front_pointer == None: self.back_pointer = None return popped else: return None #Main program starts here graph = {"A":["B","C","D"],"B":["A","E"],"C":["A","D"],"D":["A","C","F"],"E":["B","G"],"F":["D"],"G":["E"]} visited = [] q = queue() current_vertex = "A" while current_vertex != None: if not current_vertex in visited: visited.append(current_vertex) for vertex in graph[current_vertex]: if not vertex in visited: q.enqueue(vertex) current_vertex = q.dequeue() print(visited)
Editor is loading...
Leave a Comment