2011-01-07 13 views
24

Durante il tentativo di rispondere a What is the difference between a composite data type and a data structure? ho capito che mentre ho un'idea chiara di quale tipo di dati è e come non è la stessa cosa di un dato struttura, non posso mettere la differenza in parole. Se stavi insegnando un corso introduttivo di CS, come spiegheresti la differenza?Spiegare la differenza tra una struttura * dati * e un tipo di dati *

+0

Una ** struttura dati ** è un insieme di dati considerati come un'unica entità (cosa). Un int, ad esempio, è una variabile semplice, non può essere considerato come una struttura di dati, ma una matrice è una struttura di dati (una matrice è una variabile composta). Un ** tipo di dati ** è un insieme di dati e operazioni su di essi. La principale differenza tra i due è che le operazioni non sono incluse nel primo caso. Un ** tipo di dati astratto ** è un modello matematico di una struttura di dati e operazioni su di essi.In altre parole, un ADT è un'interfaccia per ciò che un DS è l'implementazione. –

risposta

33

A dati struttura è una descrizione astratta di un modo di organizzare i dati per consentire che determinate operazioni su di esso vengano eseguite in modo efficiente. Ad esempio, un albero binario è una struttura di dati, come un heap di Fibonacci, un albero AVL o skiplist. I teorici descrivono le strutture dati e ne dimostrano le proprietà al fine di dimostrare che determinati algoritmi o problemi possono essere risolti efficientemente in base a determinati presupposti.

Un dato tipo è una classe (potenzialmente infinita) di oggetti concreti che condividono tutti una proprietà. Ad esempio, "intero" è un tipo di dati che contiene tutti gli infiniti numeri interi, "stringa" è un tipo di dati contenente tutte le stringhe infinitamente numerose e "numero intero a 32 bit" è un tipo di dati contenente tutti gli interi espressi in trenta -due bit. Non v'è alcun obbligo che un tipo di dati sia un primitivo in una lingua - per esempio, in C++, il tipo int è un primitivo, come è questa:

struct MyStruct { 
    int x, y; 
}; 

In questo caso, MyStruct è un tipo di dati che rappresenta tutti gli oggetti possibili etichettati MyStruct che hanno due int s in loro etichettati x e .

È possibile avere un tipo di dati che rappresenta tutte le possibili istanze di una struttura di dati. Ad esempio, è possibile codificare un albero binario di ricerca con questo tipo di dati:

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

In breve, un dato struttura è un oggetto matematico con un insieme di proprietà che si può realizzare in molti modi diversi, come i dati tipi. Un dato tipo è solo una classe di valori che può essere concretamente costruita e rappresentata.

+0

Signore, non capisco qual è la differenza tra il tipo di dati astratti e il tipo di dati? –

3

tipo di dati è un qualsiasi tipo inclusi i tipi di base come int ma anche estesi alle strutture. le strutture sono sempre costituite da tipi di base e/o altre strutture.

Quindi int è un tipo di dati ma non una struttura. Considerando che struct point {int x; int y; } è sia una struttura che un tipo di dati.

+1

C'è un altro, più comune significato della struttura dei dati rispetto al costrutto del linguaggio C * struct * - vedi la risposta di templatetypedef sotto. –

+0

potrebbe anche essere una classe che è fondamentalmente una struct con metodi. e allora? – jun

5

Il tipo di dati non può più essere ridotto, mentre una struttura dati può essere costituita da più campi di dati diversi.

Tuttavia, molto probabilmente, vorrei usare un'analogia: un tipo di dati è un atomo, mentre le strutture dati sono molecole. (sì, lo so, gli atomi possono essere divisi ecc., ma l'analogia dovrebbe reggere allo scopo).

+0

Grande !!! Grazie!!! – beginner

Problemi correlati