Quando i programmatori parlano di "strutture dati", a che cosa si riferiscono?

18

Quando i programmatori parlano di "strutture dati", stanno solo parlando di tipi di dati astratti come liste , alberi , hashes , grafici , ecc.?

O quel termine include qualsiasi struttura che contiene dati, come tipi compositi (oggetti di classe, strutture, enumerazioni, ecc.) e tipi primitivi (booleano, int, char, ecc.)?

Ho sempre sentito i programmatori usare il termine per fare riferimento a strutture dati complesse o tipi di dati astratti, tuttavia l' articolo di Wikipedia che fornisce un l'elenco delle strutture dati include sia tipi compositi che tipi primitivi nella definizione, che non è quello che mi aspettavo (anche se ha senso).

Quando guardo intorno online vedo altri posti che si riferiscono al termine "struttura dati" nel senso di programmazione come riferiti solo a tipi di dati astratti, come questa lezione del Dipartimento di Scienze informatiche della Stony Brook University che afferma

A data structure is an actual implementation of a particular abstract data type.

o questo wikibook sulle strutture dati , che usa il termine in frasi come questa:

Because data structures are higher-level abstractions, they present to us operations on groups of data, such as adding an item to a list, or looking up the highest-priority item in a queue

Quindi, perché sento sempre i programmatori che si riferiscono a strutture dati complesse o tipi di dati astratti quando usano il termine "struttura dati"? I programmatori hanno una definizione diversa per il termine rispetto alla definizione del dizionario?

    
posta Rachel 09.05.2012 - 15:42
fonte

3 risposte

20

La definizione generica di "struttura dati" è tutto ciò che può contenere i dati in modo strutturato, quindi sì, questo includerebbe tipi compositi e tipi primitivi oltre a tipi di dati astratti. Ad esempio, una string è una struttura dati in quanto può contenere una sequenza di caratteri in modo strutturato.

Tuttavia, il termine ha anche un altro significato per i programmatori.

Poiché il termine "strutture dati" è così ampio, gli sviluppatori usano solitamente un termine più specifico per identificare di cosa stanno parlando, come class o data object o primitive type , e il termine specifico usato per la maggior parte i tipi di dati complessi o astratti sono "struttura dati"

Questo è il motivo per cui senti "la struttura dei dati" utilizzata più frequentemente per tipi di dati astratti come matrici, liste, alberi e hashtables, e non per cose come i tipi di dati primitivi

    
risposta data 09.05.2012 - 15:46
fonte
5

Il termine si riferisce ad entrambi, sebbene cose come ints e booleans siano tipicamente considerate tipi di dati primitivi (o strutture dati primitive). Il termine stesso si riferisce semplicemente a tutto ciò che memorizza i dati in un modo specifico. Certamente int soddisfa questa definizione proprio come qualcosa di simile a una tabella hash, solo che è più semplice.

Tipicamente, quando le persone usano la struttura dei dati, si riferiscono a strutture di dati più complesse, e non a quelle più semplici, ma entrambe soddisfano la definizione.

    
risposta data 09.05.2012 - 15:49
fonte
0

La definizione più semplice e molto semplice, che ho mai sentito di strutture dati, è la memorizzazione dei dati nella memoria in modo tale che operazioni di base come inserimento, aggiornamento, eliminazione ecc. possano essere eseguite in modo efficiente in termini di tempo e memoria.

Quindi, un tipo di dati indica il tipo di dati che abbiamo memorizzato in esso. Può essere intero, decimale, carattere, stringa o oggetto. Questo può essere tipi compositi o tipi primitivi oltre a tipi di dati astratti.

Ma usiamo strutture dati quando vogliamo memorizzare qualsiasi dato complesso nella memoria. Questo è il motivo per cui ascoltiamo solo i tipi di dati come Array, Liste, Alberi e Hashtables, e non per cose come i tipi di dati primitivi

    
risposta data 06.09.2018 - 21:51
fonte

Leggi altre domande sui tag