Differenza tra array e elenco collegato

Autore: Laura McKinney
Data Della Creazione: 3 Aprile 2021
Data Di Aggiornamento: 7 Maggio 2024
Anonim
Array vs Linked List | Difference Between Arrays And Linked List | Data Structures | Simplilearn
Video: Array vs Linked List | Difference Between Arrays And Linked List | Data Structures | Simplilearn

Contenuto


La principale differenza tra Vettore e Lista collegata per quanto riguarda la loro struttura. Le matrici sono basato su indice struttura dati in cui ogni elemento è associato a un indice. D'altra parte, l'elenco collegato si basa su Riferimenti dove ogni nodo è costituito dai dati e dai riferimenti all'elemento precedente e successivo.

Fondamentalmente, un array è un insieme di oggetti dati simili memorizzati in posizioni di memoria sequenziali sotto un'intestazione comune o un nome di variabile.

Mentre un elenco collegato è una struttura di dati che contiene una sequenza di elementi in cui ogni elemento è collegato al suo elemento successivo. Esistono due campi in un elemento dell'elenco collegato. Uno è il campo Dati e l'altro è il campo collegamento, il campo Dati contiene il valore effettivo da archiviare ed elaborare. Inoltre, il campo collegamento contiene l'indirizzo dell'elemento dati successivo nell'elenco collegato. L'indirizzo utilizzato per accedere a un nodo particolare è noto come puntatore.


Un'altra differenza significativa tra un array e un elenco collegato è che l'array ha una dimensione fissa e deve essere dichiarato in precedenza, ma l'elenco collegato non è limitato alla dimensione, all'espansione e al contratto durante l'esecuzione.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoVettoreLista collegata
Di baseÈ un insieme coerente di un numero fisso di elementi di dati.È un set ordinato che comprende un numero variabile di elementi di dati.
TagliaSpecificato durante la dichiarazione.Non è necessario specificare; crescere e restringersi durante l'esecuzione.
Allocazione di memoria La posizione dell'elemento viene allocata durante il tempo di compilazione.La posizione dell'elemento viene assegnata durante il tempo di esecuzione.
Ordine degli elementi Memorizzato consecutivamente Archiviato in modo casuale
Accedere all'elementoAccesso diretto o casuale, ovvero specificare l'indice dell'array o il pedice.Accesso in sequenza, ovvero Traverse a partire dal primo nodo dell'elenco tramite il puntatore.
Inserimento e cancellazione dell'elementoRallenta relativamente quando è necessario il cambio.Più facile, veloce ed efficiente.
ricerca Ricerca binaria e ricerca linearericerca lineare
Memoria richiestaDi meno Di Più
Utilizzo della memoriaInefficaceEfficiente


Definizione di array

Un array è definito come un insieme di un numero definito di elementi o elementi di dati omogenei. Significa che un array può contenere un solo tipo di dati, tutti i numeri interi, tutti i numeri in virgola mobile o tutti i caratteri. La dichiarazione di un array è la seguente:
int a;
Dove int specifica il tipo di dati o gli elementi del tipo di array. "A" è il nome di un array e il numero specificato tra parentesi quadre è il numero di elementi che un array può memorizzare, questo è anche chiamato dimensione o lunghezza dell'array.

Vediamo alcuni dei concetti da ricordare sugli array:

  • È possibile accedere ai singoli elementi di un array descrivendo il nome dell'array, seguito dall'indice o dal pedice (che determina la posizione dell'elemento nell'array) all'interno delle parentesi quadre. Ad esempio, per recuperare il 5 ° elemento dell'array, è necessario scrivere un'istruzione a.
  • In ogni caso gli elementi di un array verranno archiviati in una posizione di memoria consecutiva.
  • Il primo elemento dell'array ha indice zero. Significa che il primo e l'ultimo elemento saranno specificati rispettivamente come a e a.
  • Il numero di elementi che possono essere memorizzati in un array, ovvero la dimensione di un array o la sua lunghezza è dato dalla seguente equazione:
    (limite superiore-limite inferiore) + 1
    Per l'array sopra, sarebbe (9-0) + 1 = 10. Dove 0 è il limite inferiore dell'array e 9 è il limite superiore dell'array.
  • Le matrici possono essere lette o scritte attraverso il loop. Se leggiamo l'array monodimensionale, richiede un ciclo per la lettura e l'altro per scrivere (ing) l'array, ad esempio:
    un. Per leggere un array
    per (i = 0; i <= 9; i ++)
    {scanf (“% d”, & a); }
    b. Per scrivere un array
    per (i = 0; i <= 9; i ++)
    {f (“% d”, a); }
  • Nel caso di un array 2-D, richiederebbe due loop e allo stesso modo un array n-dimensionale richiederebbe n loop.

Le operazioni eseguite su array sono:

  1. Creazione di array
  2. Attraversare un array
  3. Inserimento di nuovi elementi
  4. Cancellazione degli elementi richiesti.
  5. Modifica di un elemento.
  6. Unione di matrici

Esempio

Il seguente programma illustra la lettura e la scrittura dell'array.

#includere
#includere
void main ()
{
int a, i;
f ("Immettere l'array");
per (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Immettere l'array");
per (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Definizione di Elenco collegato

Elenco collegato è un elenco particolare di alcuni elementi di dati collegati tra loro. In questo ogni elemento punta all'elemento successivo che rappresenta l'ordinamento logico. Ogni elemento è chiamato nodo, che ha due parti.

INFO parte che memorizza le informazioni e PUNTATORE che punta all'elemento successivo. Come sai per la memorizzazione dell'indirizzo, abbiamo una struttura dati unica in C chiamata puntatori. Quindi il secondo campo dell'elenco deve essere un tipo di puntatore.

I tipi di elenchi collegati sono Elenco a collegamento singolo, Elenco a doppio collegamento, Elenco a collegamento circolare, Elenco a doppio collegamento circolare.

Le operazioni eseguite su Elenco collegato sono:

  1. Creazione
  2. di movimento
  3. Inserimento
  4. cancellazione
  5. ricerca
  6. Concatenazione
  7. Schermo

Esempio

Il frammento seguente illustra la creazione di un elenco collegato:

nodo struct
{
int num;
nodo stuct * successivo;
}
start = NULL;
void create ()
{
typedef struct node NODE;
NODE * p, * q;
scelta del carattere;
primo = NULL;
fare
{
p = (NODE *) malloc (sizeof (NODE));
f ("Inserisci la voce di dati n");
scanf ("% d", & p -> num);
if (p == NULL)
{
q = inizio;
while (q -> next! = NULL)
{q = q -> successivo
}
p -> next = q -> next;
q -> = p;
}
altro
{
p -> next = start;
inizio = p;
}
f ("Vuoi continuare (digita y o n)? n");
scanf ("% c", e scelta);
}
while ((scelta == y) || (scelta == Y));
}

  1. Un array è la struttura di dati che contiene una raccolta di elementi di dati di tipo simile mentre l'elenco collegato è considerato come struttura di dati non primitiva che contiene una raccolta di elementi collegati non ordinati noti come nodi.
  2. Nell'array gli elementi appartengono agli indici, cioè se vuoi entrare nel quarto elemento devi scrivere il nome della variabile con il suo indice o posizione all'interno della parentesi quadra.
    In un elenco collegato, però, devi iniziare dalla testa e proseguire fino a raggiungere il quarto elemento.
  3. Mentre l'accesso a un array di elementi è veloce mentre l'elenco collegato richiede tempo lineare, quindi è un po 'più lento.
  4. Operazioni come l'inserimento e l'eliminazione in array richiedono molto tempo. D'altra parte, l'esecuzione di queste operazioni negli elenchi collegati è rapida.
  5. Le matrici sono di dimensioni fisse. Al contrario, gli elenchi collegati sono dinamici e flessibili e possono espandersi e contrarne le dimensioni.
  6. In un array, la memoria viene assegnata durante il tempo di compilazione mentre in un elenco collegato viene allocata durante l'esecuzione o il runtime.
  7. Gli elementi vengono archiviati consecutivamente in array mentre è archiviato in modo casuale negli elenchi collegati.
  8. Il requisito di memoria è inferiore a causa della memorizzazione effettiva dei dati nell'indice dell'array. Al contrario, c'è bisogno di più memoria negli elenchi collegati a causa della memorizzazione di ulteriori elementi di riferimento successivi e precedenti.
  9. Inoltre, l'utilizzo della memoria è inefficiente nell'array. Al contrario, l'utilizzo della memoria è efficiente nell'array.

Conclusione

Gli elenchi di array e collegati sono i tipi di strutture di dati che differiscono per struttura, accesso e metodi di manipolazione, requisiti di memoria e utilizzo. E hanno un vantaggio e uno svantaggio particolari rispetto alla sua implementazione. Di conseguenza, uno dei due può essere utilizzato secondo necessità.