Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных. Период.

Вы можете пропустить оставшуюся часть статьи, если ответ имеет смысл для вас. Продолжай читать; однако, если вы хотите увидеть более подробную информацию об этом определении.

Структура данных — это просто структура для хранения/извлечения данныхв/из памяти.Это действительно так просто. Однако даже до сегодняшнего дня я едва ли видел какой-либо ресурс, дающий прямое и явное определение структуры данных на простом английском языке. На мой взгляд, хорошее определение должно быть как бритва четким. Любой должен быть в состоянии легко понять это и отличить, подпадает ли что-то под это определение или нет. Если определение не такое простое и описательное, значит, оно не то.

Структура данных предоставляет группу методов и операторов для хранения и извлечения данных и (вероятно) не привязана к определенному типу данных. Рассмотрим массив; скобки (т. е. []) в этой структуре данных — это оператор, с помощью которого программы могут сохранять/извлекать данные. Структура, которую использует массив, представляет собой группу заразных блоков памяти, где к каждому блоку будет осуществляться прямой доступ на основе адреса памяти самого первого блока памяти массива.

Любая другая базовая структура данных, такая как связанный список, стек, очередь, набор и т. д., также представляет собой просто группу методов и операторов для обработки данных, не ограничивая себя конкретным типом данных.

Под этим определением мы можем рассматривать любой класс (или структуру), который хранит и извлекает данные, структуру данных. Предположим, что класс реализует хеш-таблицу. Является ли такой класс структурой данных? Почему бы и нет? Хеш-таблица следует определенной организации (т. е. структуре) для хранения и извлечения данных. Он предоставляет группу методов для работы с данными. Так что, конечно, такой класс является структурой данных, независимо от деталей его реализации (например, типа используемой хеш-функции, способа разрешения коллизий и т. д.). Любой другой определяемый пользователем класс, который хранит/извлекает данные, также является структурой данных.

Я никогда не находил сложные жаргонизированные определения полезными и практичными. Лично я склонен сокращать детали определения до такой степени, чтобы оно не теряло своего смысла. Например, многие ресурсы считают обязательным для структуры данных независимость от типа данных. Я просто не. Независимо от того, привязана структура данных к определенному типу данных или нет, это не меняет того факта, что она обрабатывает данные (даже если только один конкретный тип). Вот почему я характеризую эту функцию как бонус к структуре данных; хорошо, если структура данных поддерживает разные типы данных, но это не обязательно.

В конце концов, я надеюсь, что это определение проясняет некоторые неясности и предоставляет простой, но практичный способ использования структур данных в вашей повседневной жизни программирования.