Назад к вопросам
Junior
68
questionbank

Опиши основные операции для структур данных: стек и очередь.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Стек

Стек (Stack) — это структура данных, работающая по принципу LIFO (Last-In, First-Out), где последним добавленным элементом будет первым извлеченным.

Основные операции:

  • Push: Добавление элемента на вершину стека.

    # Пример операции push в Python с использованием списка
    stack = []
    stack.append(10) # Добавляем элемент
    stack.append(20)
    # Теперь стек: [10, 20] (20 на вершине)
    
  • Pop: Удаление и возвращение элемента с вершины стека. Если стек пуст, операция может вызвать ошибку.

    # Пример операции pop
    element = stack.pop() # Извлекаем элемент (20)
    # Теперь стек: [10]
    # element == 20
    
  • Peek (или Top): Возвращение элемента с вершины стека без его удаления.

    # Пример операции peek
    if stack: # Проверяем, не пуст ли стек
        top_element = stack[-1]
        # top_element == 10
        # Стек не меняется: [10]
    
  • IsEmpty: Проверка, пуст ли стек.

    # Пример операции is_empty
    is_empty = len(stack) == 0
    # is_empty == False в данном случае
    empty_stack = []
    is_empty_empty = len(empty_stack) == 0
    # is_empty_empty == True
    

Очередь

Очередь (Queue) — это структура данных, работающая по принципу FIFO (First-In, First-Out), где первым добавленным элементом будет первым извлеченным.

Основные операции:

  • Enqueue: Добавление элемента в конец очереди.

    # Пример операции enqueue в Python с использованием collections.deque
    from collections import deque
    
    queue = deque()
    queue.append(10) # Добавляем элемент в конец
    queue.append(20)
    # Теперь очередь: deque([10, 20]) (10 в начале, 20 в конце)
    
  • Dequeue: Удаление и возвращение элемента из начала очереди. Если очередь пуста, операция может вызвать ошибку.

    # Пример операции dequeue
    element = queue.popleft() # Извлекаем элемент из начала (10)
    # Теперь очередь: deque([20])
    # element == 10
    
  • Front (или Peek): Возвращение элемента из начала очереди без его удаления.

    # Пример операции front
    if queue: # Проверяем, не пуста ли очередь
        front_element = queue[0]
        # front_element == 20
        # Очередь не меняется: deque([20])
    
  • IsEmpty: Проверка, пуста ли очередь.

    # Пример операции is_empty
    is_empty = len(queue) == 0
    # is_empty == False в данном случае
    empty_queue = deque()
    is_empty_empty = len(empty_queue) == 0
    # is_empty_empty == True