Алгоритмы

Расскажите про очередь и стек.


Очередь (Queue) и стек (Stack) - это две основные структуры данных, которые используются для хранения и управления элементами в программировании. Очередь: Очередь - это структура данных, в которой элементы добавляются в конец и удаляются из начала. Она работает по принципу "первым пришел, первым ушел" (FIFO - First-In-First-Out). Элементы добавляются в конец очереди, а удаление происходит из начала. В очереди доступны две основные операции: добавление элемента в конец (enqueue) и удаление элемента из начала (dequeue). Пример реализации очереди в Java: import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); // Добавление элементов в очередь queue.add("Элемент 1"); queue.add("Элемент 2"); queue.add("Элемент 3"); // Удаление элемента из очереди String element = queue.poll(); System.out.println("Удаленный элемент: " + element); // Получение элемента из очереди без удаления String peekedElement = queue.peek(); System.out.println("Элемент на вершине очереди: " + peekedElement); } } В данном примере мы используем реализацию очереди с помощью класса `LinkedList` . Мы добавляем элементы в очередь с помощью метода `add()` , удаляем элемент из начала очереди с помощью метода `poll()` и получаем элемент на вершине очереди без удаления с помощью метода `peek()` . Стек: Стек - это структура данных, в которой элементы добавляются и удаляются только с одного конца. Он работает по принципу "последним пришел, первым ушел" (LIFO - Last-In-First-Out). Элементы добавляются и удаляются с вершины стека. В стеке доступны две основные операции: добавление элемента на вершину (push) и удаление элемента с вершины (pop). Пример реализации стека в Java: import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack<String> stack = new Stack<>(); // Добавление элементов в стек stack.push("Элемент 1"); stack.push("Элемент 2"); stack.push("Элемент 3"); // Удаление элемента с вершины стека String element = stack.pop(); System.out.println("Удаленный элемент: " + element); // Получение элемента с вершины стека без удаления String peekedElement = stack.peek(); System.out.println("Элемент на вершине стека: " + peekedElement); } } В данном примере мы используем реализацию стека с помощью класса `Stack` . Мы добавляем элементы на вершину стека с помощью метода `push()` , удаляем элемент с вершины стека с помощью метода `pop()` и получаем элемент на вершине стека без удаления с помощью метода `peek()` . Очередь и стек являются важными структурами данных, которые используются во многих алгоритмах и задачах программирования. Они имеют разные принципы работы и подходят для разных сценариев использования.


Копировать ссылку