Пытаясь ответить Что такое разница между составным типом данных и структурой данных? я понял, что хотя у меня есть четкое представление о том, что такое тип данных , и что это не то же самое, что данные структура, я не могу описать разницу словами. Если бы вы вели вводный курс CS, как бы вы объяснили разницу?
Объясните разницу между *структурой* данных и *типом данных*
Ответы (3)
Структура данных – это абстрактное описание способа организации данных, позволяющего эффективно выполнять над ними определенные операции. Например, двоичное дерево — это структура данных, как и куча Фибоначчи, дерево AVL или список пропусков. Теоретики описывают структуры данных и доказывают их свойства, чтобы показать, что определенные алгоритмы или проблемы могут быть эффективно решены при определенных предположениях.
Тип данных – это (потенциально бесконечный) класс конкретных объектов, у которых есть общее свойство. Например, «целое число» — это тип данных, содержащий все бесконечное множество целых чисел, «строка» — это тип данных, содержащий все бесконечное множество строк, а «32-битное целое число» — это тип данных, содержащий все целые числа, которые могут быть выражены в тридцати числах. -два бита. В языке не требуется, чтобы тип данных был примитивом — например, в C++ тип int
является примитивом, как этот:
struct MyStruct {
int x, y;
};
В этом случае MyStruct
— это тип данных, представляющий все возможные объекты, помеченные MyStruct
, которые содержат два int
, помеченных как x
и y
.
Можно иметь тип данных, представляющий все возможные экземпляры структуры данных. Например, вы можете закодировать двоичное дерево поиска с помощью этого типа данных:
struct BST {
int data;
BST* left, *right;
};
Короче говоря, структура данных – это математический объект с некоторым набором свойств, которые могут быть реализованы различными способами в виде типов данных. Тип данных — это просто класс значений, которые могут быть конкретно сконструированы и представлены.
abstract data type
— это тип данных без _implementation_, он оставляет выбор реализации за программистом, что является синонимом interface
. См. это для реализации Python.
- person nosahama; 03.05.2020
Тип данных больше не может быть сокращен, в то время как структура данных может, поскольку она состоит из нескольких полей разных данных.
Однако, скорее всего, я бы использовал аналогию — тип данных — это атом, а структуры данных — это молекулы. (да, я знаю, что атомы можно расщепить и т. д., но для этой цели следует провести аналогию).
тип данных — это любой тип, включая базовые типы, такие как int, но также распространяющийся на структуры. структуры всегда состоят из базовых типов и/или других структур.
Итак, int — это тип данных, а не структура. В то время как struct point { int x; инт у; } является одновременно структурой и типом данных.