def queue_operations(): '''USER OPERATIONS OF A QUEUE IMPLEMENTATION''' queue = Queue() while choice > 0: queue_menu = [('MAIN MENU', -1), ('EXIT', 0), \ ('ENQUEUE', 1), ('DEQUEUE', 2), ('FRONT', 3), ('REAR', 4), ('SIZE', 5)] print_menu(queue_menu) choice = int(input().strip()) if choice == 1: print('ENTER ITEM :', end=' ') queue.enqueue(int(input().strip())) print('ENQUEUE OPERATION SUCCESSFUL.') elif choice == 2: if queue.is_empty(): print('UNDERFLOW') else: print('DEQUEUED VALUE :', queue.dequeue()) elif choice == 3: if queue.is_empty(): print('UNDERFLOW') else: print('FRONT :', queue.front()) elif choice == 4: if queue.is_empty(): print('UNDERFLOW') else: print('REAR :', queue.rear()) elif choice == 5: print('QUEUE SIZE :', queue.size())
def bfs_paths(graph, source, destination): '''ALL POSSIBLE PATHS FROM SOURCE TO DESTINATION USING BREADTH-FIRST SEARCH''' queue = Queue() queue.enqueue((source, [source])) while not queue.is_empty(): (vertex, path) = queue.dequeue() for next_node in graph[vertex].keys(): if next_node == destination: yield path + [next_node] else: queue.enqueue((next_node, path + next_node))
def bfs(graph, source): '''BREADTH-FIRST SEARCH''' queue = Queue() visited, distance = set(), {} distance[source] = 0 queue.enqueue(source) visited.add(source) while not queue.is_empty(): u = queue.dequeue() for v in graph[u].keys(): if v not in visited: visited.add(v) distance[v] = distance[u] + 1 queue.enqueue(v) return distance