Объясните разницу между *структурой* данных и *типом данных*

Пытаясь ответить Что такое разница между составным типом данных и структурой данных? я понял, что хотя у меня есть четкое представление о том, что такое тип данных , и что это не то же самое, что данные структура, я не могу описать разницу словами. Если бы вы вели вводный курс CS, как бы вы объяснили разницу?


person zwol    schedule 07.01.2011    source источник
comment
Структура данных — это набор данных, рассматриваемых как одна сущность (вещь). Например, int — это простая переменная, которую нельзя рассматривать как структуру данных, но массив — это структура данных (массив — это составная переменная). Тип данных – это набор данных и операций над ними. Основное различие между ними состоит в том, что операции не включены в первый случай. Абстрактный тип данных — это математическая модель структуры данных и операций с ними. Другими словами, ADT — это интерфейс к тому, что DS представляет собой реализацию.   -  person Maxim Chetrusca    schedule 18.08.2014


Ответы (3)


Структура данных – это абстрактное описание способа организации данных, позволяющего эффективно выполнять над ними определенные операции. Например, двоичное дерево — это структура данных, как и куча Фибоначчи, дерево AVL или список пропусков. Теоретики описывают структуры данных и доказывают их свойства, чтобы показать, что определенные алгоритмы или проблемы могут быть эффективно решены при определенных предположениях.

Тип данных – это (потенциально бесконечный) класс конкретных объектов, у которых есть общее свойство. Например, «целое число» — это тип данных, содержащий все бесконечное множество целых чисел, «строка» — это тип данных, содержащий все бесконечное множество строк, а «32-битное целое число» — это тип данных, содержащий все целые числа, которые могут быть выражены в тридцати числах. -два бита. В языке не требуется, чтобы тип данных был примитивом — например, в C++ тип int является примитивом, как этот:

struct MyStruct {
    int x, y;
};

В этом случае MyStruct — это тип данных, представляющий все возможные объекты, помеченные MyStruct, которые содержат два int, помеченных как x и y.

Можно иметь тип данных, представляющий все возможные экземпляры структуры данных. Например, вы можете закодировать двоичное дерево поиска с помощью этого типа данных:

struct BST {
    int data;
    BST* left, *right;
};

Короче говоря, структура данных – это математический объект с некоторым набором свойств, которые могут быть реализованы различными способами в виде типов данных. Тип данных — это просто класс значений, которые могут быть конкретно сконструированы и представлены.

person templatetypedef    schedule 07.01.2011
comment
Сэр, я не понимаю, в чем разница между абстрактным типом данных и типом данных? - person Suraj Jain; 20.10.2016
comment
@SurajJain ADT — это абстракция структуры данных, которая относится к данным только абстрактно. Он описывает интерфейс и поведение структуры данных, но не структуру данных. Тип данных менее абстрактен, чем структура данных. Конкретная реализация структуры данных на конкретном языке создает тип данных на этом языке. - person Alan; 30.05.2019
comment
abstract data type — это тип данных без _implementation_, он оставляет выбор реализации за программистом, что является синонимом interface. См. это для реализации Python. - person nosahama; 03.05.2020

Тип данных больше не может быть сокращен, в то время как структура данных может, поскольку она состоит из нескольких полей разных данных.

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

person Femaref    schedule 07.01.2011
comment
Большой !!! Спасибо!!! - person beginner; 06.09.2017
comment
Atom работает как аналогия, потому что, хотя он технически может быть разделен, то же самое можно сделать и с типами данных. Строки можно разбивать на символы. Целые числа можно разделить на биты. Несмотря на это, типы данных, такие как атомы, представляют собой фундаментальные единицы в определенной области. - person svadhisthana; 22.03.2019

тип данных — это любой тип, включая базовые типы, такие как int, но также распространяющийся на структуры. структуры всегда состоят из базовых типов и/или других структур.

Итак, int — это тип данных, а не структура. В то время как struct point { int x; инт у; } является одновременно структурой и типом данных.

person jun    schedule 07.01.2011
comment
Существует другое, более распространенное значение структуры данных, чем конструкция языка C struct — см. ответ templatetypedef ниже. - person Andy Thomas; 08.01.2011
comment
это также может быть класс, который в основном представляет собой структуру с методами. И что? - person jun; 08.01.2011