Untitled
unknown
plain_text
2 years ago
1.6 kB
13
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