Penso che non devi accettare di non capire queste cose, perché sono davvero fondamentali. Detto questo, non capirli non è niente di cui sentirsi male. Puoi spiegare un elenco collegato a un bambino. Quindi, se il tuo insegnante non ti ha spiegato, è colpa loro. Quindi non dovresti passare il tempo a preoccuparti, ma piuttosto cerca di trovare persone che possano spiegartelo. Spesso un compagno di studi è un insegnante di gran lunga migliore di un accademico a tempo pieno.
Pensa ai treni
Immagina di avere una serie di vagoni ferroviari, in cui ogni carrozza ha una capacità sufficiente per contenere un dato. Ogni carrello ha una sorta di gancio all'estremità, che può essere attaccato alla parte anteriore di un altro carrello.
Questo in effetti ti dà un elenco collegato:
- l'elenco vuoto: il treno non contiene carrozze (e quindi non trasporta dati)
- aggiunta di un elemento: aggiungi un nuovo carrello contenente l'elemento davanti al treno e aggancialo al resto del treno
- rimozione di un elemento: trova il carrello contenente l'elemento. Rimuovilo (potresti aver bisogno di una gru qui :)), aggancia il carrello prima con il carrello dopo.
- sostituzione di un elemento: trova il carrello contenente il vecchio elemento. Scambia il vecchio elemento con il nuovo elemento.
- inserendo un elemento subito dopo l'altro: trova il carrello contenente l'elemento dopo il quale vuoi inserire. Inserisci una nuova carrozza dopo di essa, che è agganciata di conseguenza (non vogliamo che il treno cada a pezzi) e inserisci il nuovo elemento al suo interno.
Al contrario, potresti pensare a un array come un treno con un determinato numero di carrozze, che non può essere riorganizzato in alcun modo. Tutto quello che puoi fare è cambiare i dati al loro interno. Questo modello spiega anche molti dei problemi che gli array hanno:
- Se vuoi inserire un elemento prima di un altro, dovrai spostare tutti i seguenti elementi sul carrello successivo.
- Se si desidera rimuovere un elemento, sarà necessario spostare tutti i seguenti elementi di un carrello in avanti.
- Se hai bisogno di un treno con più carrozze, dovrai costruirne uno nuovo, perché non puoi semplicemente anteporre una carrozza. D'altra parte, trovare i carrelli in un array è molto più facile, perché puoi semplicemente numerarli permanentemente (il loro ordine non cambierà mai).
Per quanto riguarda lo stack: uno "stack" è meno una struttura di dati, che un'idea. L'idea della pila è che si comporta come una pila di libri. Puoi solo mettere i libri in cima alla pila e puoi sempre togliere il libro in cima alla pila (almeno se i libri sono sufficientemente pesanti).
Detto questo, un elenco collegato può essere utilizzato come una pila, se si considerano i dati nei carrelli come libri e il libro nel primo carrello più come la parte superiore della pila.
Quindi spero che questo ti abbia aiutato. Forse no. Forse sei più di un tipo visivo. In tal caso, ti suggerisco di trovare qualcuno che sia bravo a dare spiegazioni visive e te lo spieghi. Non ci vorrà molto, ma ne varrà assolutamente la pena.
Va bene lottare con questo ora. Ma semplicemente accettarlo, non è un'opzione a lungo termine.