Ответ 1
Структура данных представляет собой абстрактное описание способа организации данных, позволяющих эффективно выполнять определенные операции над ним. Например, двоичное дерево представляет собой структуру данных, а также кучу Фибоначчи, дерево AVL или skiplist. Теоретики описывают структуры данных и доказывают их свойства, чтобы показать, что определенные алгоритмы или задачи могут быть эффективно решены при определенных предположениях.
Тип данных - это (потенциально бесконечный) класс конкретных объектов, все из которых имеют некоторое свойство. Например, "integer" - это тип данных, содержащий все бесконечно много целых чисел, "строка" - это тип данных, содержащий все бесконечно много строк, а "32-разрядное целое число" - это тип данных, содержащий все целые числа, выражаемые в тридцать два бита. Нет требования, чтобы тип данных был примитивным в языке - например, в С++, тип int
является примитивным, как и этот:
struct MyStruct {
int x, y;
};
В этом случае MyStruct
- это тип данных, представляющий все возможные объекты с меткой MyStruct
, в которых есть два int
, помеченные как x
и y
.
Возможно иметь тип данных, представляющий все возможные экземпляры структуры данных. Например, вы можете кодировать двоичное дерево поиска с этим типом данных:
struct BST {
int data;
BST* left, *right;
};
Короче говоря, структура данных - это математический объект с некоторым набором свойств, который может быть реализован различными способами как типы данных. Тип данных - это просто класс значений, который может быть конкретно сконструирован и представлен.