Назад к вопросам
Junior
89
questionbank
Какие структуры данных в программировании вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Массивы (индексированные, ассоциативные)
- Стек
- Очередь
- Связные списки (односвязный, двусвязный, циклический)
- Деревья (бинарное, сбалансированное, B-дерево и т.д.)
- Графы
- Хеш-таблицы (карты, словари)
- Множества
- Кучи (heap)
Краткое описание некоторых в контексте PHP:
Массивы
PHP-массивы являются по сути упорядоченными картами, сочетающими свойства массивов и списков. Могут содержать как числовые, так и строковые ключи.
<?php
// Индексированный массив
$indexedArray = [1, 2, 3];
// Ассоциативный массив
$associativeArray = ['key1' => 'value1', 'key2' => 'value2'];
Стек
Работает по принципу LIFO (Last-In, First-Out). В PHP можно реализовать с помощью массива и функций array_push(), array_pop().
<?php
$stack = [];
array_push($stack, 'item1'); // Добавить в конец
array_push($stack, 'item2');
$item = array_pop($stack); // Извлечь из конца ('item2')
Очередь
Работает по принципу FIFO (First-In, First-Out). В PHP можно реализовать с помощью массива и функций array_push(), array_shift().
<?php
$queue = [];
array_push($queue, 'task1'); // Добавить в конец
array_push($queue, 'task2');
$task = array_shift($queue); // Извлечь из начала ('task1')
Хеш-таблицы / Карты (Ассоциативные массивы)
Сопоставляют ключи значениям для быстрого поиска. В PHP ассоциативные массивы по сути являются хеш-таблицами.
<?php
$map = ['apple' => 'red', 'banana' => 'yellow'];
$color = $map['apple']; // 'red'
Таблица с примерами и описанием:
| Структура данных | Принцип работы | Применение | PHP-аналог/реализация |
|---|---|---|---|
| Массив (индексированный) | Последовательное хранение | Коллекции однотипных данных, списки | array |
| Массив (ассоциативный) | Хранение пар ключ-значение | Словари, конфигурации, данные форм | array |
| Стек | LIFO | История операций, вызов функций, парсинг | array с push/pop |
| Очередь | FIFO | Обработка задач, буферы | array с push/shift |
| Связный список | Элементы связаны указателями | Динамические списки, очереди, стеки | Нет встроенного типа, реализация объектами |
| Дерево | Иерархическая структура | Файловые системы, структуры XML/JSON, поиск | Нет встроенного типа, реализация объектами |
| Граф | Множество вершин и ребер | Социальные сети, маршрутизация, зависимости | Нет встроенного типа, реализация объектами |
| Хеш-таблица/Карта | Быстрый доступ по хешу ключа | Кэши, словари, ассоциативные массивы | array (ассоциативный) |
| Множество | Коллекция уникальных элементов | Проверка уникальности, операции над множествами | array с проверкой уникальности, array_unique |
| Куча | Частично упорядоченное дерево | Приоритетные очереди, сортировка heapsort | SplHeap, SplPriorityQueue |