Пример #1
0
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