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