Differenza tra array e elenco collegato
Contenuto
- Tabella di comparazione
- Definizione di array
- Vediamo alcuni dei concetti da ricordare sugli array:
- Le operazioni eseguite su array sono:
- Esempio
- Definizione di Elenco collegato
- Le operazioni eseguite su Elenco collegato sono:
- Esempio
- Conclusione
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.
- Tabella di comparazione
- Definizione
- Differenze chiave
- Conclusione
Tabella di comparazione
Base per il confronto | Vettore | Lista 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. |
Taglia | Specificato 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'elemento | Accesso 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'elemento | Rallenta relativamente quando è necessario il cambio. | Più facile, veloce ed efficiente. |
ricerca | Ricerca binaria e ricerca lineare | ricerca lineare |
Memoria richiesta | Di meno | Di Più |
Utilizzo della memoria | Inefficace | Efficiente |
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:
- Creazione di array
- Attraversare un array
- Inserimento di nuovi elementi
- Cancellazione degli elementi richiesti.
- Modifica di un elemento.
- 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:
- Creazione
- di movimento
- Inserimento
- cancellazione
- ricerca
- Concatenazione
- 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));
}
- 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.
- 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. - Mentre l'accesso a un array di elementi è veloce mentre l'elenco collegato richiede tempo lineare, quindi è un po 'più lento.
- Operazioni come l'inserimento e l'eliminazione in array richiedono molto tempo. D'altra parte, l'esecuzione di queste operazioni negli elenchi collegati è rapida.
- Le matrici sono di dimensioni fisse. Al contrario, gli elenchi collegati sono dinamici e flessibili e possono espandersi e contrarne le dimensioni.
- 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.
- Gli elementi vengono archiviati consecutivamente in array mentre è archiviato in modo casuale negli elenchi collegati.
- 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.
- 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à.