2011-01-07 13 views
24

Al tratar de responder What is the difference between a composite data type and a data structure? me di cuenta de que, si bien tengo una idea clara de qué tipo de datos es es, y cómo no es lo mismo que una estructura de datos , no puedo poner la diferencia en palabras. Si estuvieras enseñando un curso introductorio de CS, ¿cómo explicarías la diferencia?Explique la diferencia entre una estructura * de datos * y una * tipo de datos *

+0

A ** estructura de datos ** es un conjunto de datos considerado como una entidad (cosa). Un int, por ejemplo, es una variable simple, no se puede considerar como una estructura de datos, pero una matriz es una estructura de datos (una matriz es una variable compuesta). Un ** tipo de datos ** es un conjunto de datos y operaciones sobre ellos. La principal diferencia entre los dos es que las operaciones no están incluidas en el primer caso. Un ** tipo de datos abstracto ** es un modelo matemático de una estructura de datos y operaciones en ellos.En otras palabras, un ADT es una interfaz para lo que un DS es la implementación. –

Respuesta

33

A datos estructura es una descripción abstracta de una forma de organizar datos para permitir que se realicen ciertas operaciones en él de manera eficiente. Por ejemplo, un árbol binario es una estructura de datos, como un montón de Fibonacci, un árbol AVL o una lista de skiplist. Los teóricos describen estructuras de datos y prueban sus propiedades para mostrar que ciertos algoritmos o problemas se pueden resolver de manera eficiente bajo ciertas suposiciones.

Un dato tipo es una clase (potencialmente infinita) de objetos concretos que todos comparten alguna propiedad. Por ejemplo, "entero" es un tipo de datos que contiene todos los enteros infinitos, "cadena" es un tipo de datos que contiene todas las cadenas infinitamente numerosas, y "entero de 32 bits" es un tipo de datos que contiene todos los enteros expresables en treinta -dos bits No hay ningún requisito de que un tipo de datos sea una primitiva en un idioma - por ejemplo, en C++, el tipo int es un primitivo, como es ésta:

struct MyStruct { 
    int x, y; 
}; 

En este caso, MyStruct es un tipo de datos que representa todos los objetos posibles etiquetados MyStruct que tienen dos int s en ellos etiquetados x y y.

Es posible tener un tipo de datos que represente todas las instancias posibles de una estructura de datos. Por ejemplo, se podría codificar un árbol binario de búsqueda con este tipo de datos:

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

En definitiva, un estructura de datos es un objeto matemático con un conjunto de propiedades que se puede realizar de muchas formas diferentes como datos tipos. Un dato tipo es solo una clase de valores que se pueden construir y representar de manera concreta.

+0

Señor, no entiendo cuál es la diferencia entre el tipo de datos abstractos y el tipo de datos. –

3

tipo de datos es cualquier tipo, incluidos los tipos básicos como int, pero también se extiende a las estructuras. las estructuras siempre se componen de tipos de base y/u otras estructuras.

So int es un tipo de datos pero no una estructura. Mientras que struct point {int x; int y; } es a la vez una estructura y un tipo de datos.

+1

Hay otro significado más común de la estructura de datos que la construcción del lenguaje C * struct * - vea la respuesta de templatetypedef a continuación. –

+0

también podría ser una clase que es básicamente una estructura con métodos. ¿Y qué? – jun

5

El tipo de datos no se puede reducir más, mientras que una estructura de datos puede, ya que consta de múltiples campos de datos diferentes.

Sin embargo, lo más probable es que utilice una analogía: un tipo de datos es un átomo, mientras que las estructuras de datos son moléculas. (Sí, lo sé, los átomos se pueden dividir, etc., pero la analogía debe mantenerse para el propósito).

+0

¡¡¡Genial !!! ¡¡¡Gracias!!! – beginner

Cuestiones relacionadas