Куча (структура данных)
- 1 year ago
- 0
- 0
Структура данных ( англ. data structure ) — программная единица , позволяющая хранить и обрабатывать ( машиной ) однотипные и/или логически связанные данные . Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс.
Термин «структура данных» может иметь несколько близких, но тем не менее различных значений :
Структуры данных формируются с помощью типов данных , ссылок и операций над ними в выбранном языке программирования .
Различные виды структур данных подходят для различных приложений; некоторые из них имеют узкую специализацию для определённых задач. Например, B-деревья обычно подходят для создания баз данных , в то время как хеш-таблицы используются повсеместно для создания различного рода словарей , например, для отображения доменных имён в интернет-адресах компьютеров .
При разработке программного обеспечения сложность реализации и качество работы программ существенно зависят от правильного выбора структур данных. Это понимание дало начало формальным методам разработки и языкам программирования, в которых именно структуры данных, а не алгоритмы, ставятся во главу архитектуры программного средства. Большая часть таких языков обладает определённым типом модульности , позволяющим структурам данных безопасно переиспользоваться в различных приложениях. Объектно-ориентированные языки , такие как Java , C# и C++ , являются примерами такого подхода.
Многие классические структуры данных представлены в стандартных библиотеках языков программирования или непосредственно встроены в языки программирования. Например, структура данных хеш-таблица встроена в языки программирования Lua , Perl , Python , Ruby , Tcl и др. Широко используется стандартная библиотека шаблонов (STL) языка C++.
Фундаментальными строительными блоками для большей части структур данных являются
массивы
,
записи
(
struct
в
Си
и
record
в
Паскале
),
размеченные объединения
(
union
в Си) и
ссылки
. Например,
двусвязный список
может быть построен с помощью записей и ссылок, где каждая запись (узел) будет хранить данные и ссылки на «левый» и «правый» узлы.
Проектировать структуры данных для функциональных языков более сложно, чем для императивных, как минимум по двум причинам :