Implementazione dell'elenco doppiamente collegato C ++

Implementazione dell'elenco doppiamente collegato C ++
Un elenco doppiamente collegato è il concetto strutturale in C ++ che è composto da 1 o più nodi. Un singolo nodo deve avere tre parti i.e., Dati, un riferimento al nodo precedente e al prossimo nodo imminente. Si dice che il primo nodo sia il nodo "testa" utilizzato per accedere all'elenco collegato complessivo. L'ultimo nodo di un elenco collegato ha sempre il valore null. Se sei nuovo in questo concetto e cerchi risorse autentiche per ottenere conoscenza, allora questa guida è per te.

Iniziamo questo articolo con la nuova creazione di file C ++. Dobbiamo crearlo utilizzando la query di "touch" del terminale. Dopo la creazione di file, la nostra prossima attività è aprirlo e creare del codice C ++. Per l'apertura, puoi utilizzare qualsiasi editor integrato di Ubuntu 20.04 come un editor di testo, editor di VIM o editor GNU Nano. Quindi, stiamo usando le istruzioni "nano" sul nostro guscio per aprire doppiamente.file cc in esso.

Esempio 01:

Facciamo un esempio di base del codice C ++ per creare un elenco a doppio legame. Dopo l'apertura del file, abbiamo aggiunto iostream. Lo spazio dei nomi standard C ++ verrà utilizzato. Dopo questo, abbiamo creato una struttura di nodo denominata "nodo" con alcuni dei suoi elementi. Contiene la variabile intera "d" come parte dei dati. Quindi, abbiamo definito tre nuove strutture di nodo. Il nodo "P" mostra il nodo precedente, "n" mostra il nodo successivo e il nodo della testa "H" è specificato null come un altro nodo.

Ora, la struttura di cui sopra non è utile fino a quando non aggiungiamo e mostriamo alcuni nodi nel codice del programma. Stiamo usando la funzione ADD () per ottenere i dati del nodo dalla funzione principale (). Nella sua prima riga, abbiamo creato un nuovo nodo "nuovo nodo" usando il "nodo" della struttura e l'assegnandolo una memoria uguale alla dimensione di un "nodo". I caratteri "->" vengono utilizzati per fare riferimento alle parti del nodo i.e., Successivamente, precedente, dati, ecc. Pertanto, abbiamo fatto riferimento ai dati di un nuovo nodo usando -> cantare e aggiungere dati passati dalla funzione principale () nel parametro "nd" nella variabile "d" di un nuovo nodo. Il nodo precedente di un nuovo nodo sarà inizializzato su Null e il suo nodo successivo sarà una "testa". L'istruzione "if" è qui per verificare che il valore della testa "h" non sia uguale a null. Se il valore di "H" non è nullo, renderà il nodo precedente di un nodo "head", un nuovo nodo. Inoltre, la testa sarà anche un nuovo nodo.e., Avere un valore di un nuovo nodo.

Ecco che arriva la funzione "show ()" per visualizzare il nodo creato. All'interno di esso, abbiamo creato un nodo "PTR" e lo abbiamo reso una "testa". Il ciclo "while" è qui per confermare che il valore di "ptr" non è nullo. Mentre la condizione è soddisfatta, l'istruzione Cout visualizzerà i dati aggiunti da un utente nello stesso modo opposto. Ora, i nodi successivi di "PTR" diventeranno "PTR".

Ecco la nostra funzione principale () da dove inizia l'esecuzione. Abbiamo chiamato la funzione "Aggiungi" 4 volte per creare un nuovo nodo e aggiungere dati nella variabile "D" di un nuovo. L'istruzione Cout ci sta mostrando che chiameremo la funzione "spettacolo" per visualizzare tutti i nodi che abbiamo aggiunto.

Ora, è tempo di compilare questo codice C ++ nel compilatore G ++ di Ubuntu per il linguaggio C ++. All'esecuzione del codice con "./UN.fuori ”, siamo stati visualizzati con i dati di 4 nodi nell'ordine opposto i.e., Abbiamo aggiunto in 4, 12, 2, 7 ordini e ritorna in 7, 2, 12, 4, mostrando l'ultimo arrivo di primo servizio.

Esempio 02:

Diamo un'occhiata a un altro esempio di una lista doppiamente collegata. Ha creato una struttura "nodo" con la stessa variabile "d", nodo successivo "n" e nodo precedente "p".

Ora abbiamo utilizzato la funzione FrontPush () per inserire un nodo all'inizio con i suoi dati I.e. nodo testa. Abbiamo creato un nuovo nodo al suo interno.e. "Newnode" usando la struttura della struttura "nodo*". Dopo questo, stiamo facendo riferimento ai suoi dati "D", il suo prossimo nodo che sarà una "testa" e il nodo precedente che sarà nullo. L'istruzione "if" è stata utilizzata per verificare che il valore della testa non sia nullo. Se la testa non è già "nulla", dobbiamo rendere la testa precedente un nuovo nodo e l'intestazione punterà verso il nuovo nodo.

La funzione AfterPush () è qui per inserire un nuovo nodo dopo il nostro nodo già realizzato. L'istruzione "if" verificherà se il nodo precedente è uguale a null o meno e lo visualizzerà usando il "cout". È stato formato un nuovo nodo e i dati verranno inseriti in "D". Il "prossimo" del nuovo diventerà il prossimo del precedente e il prossimo del precedente diventerà un nuovo nodo. Il precedente di nuovo diventerà il precedente stesso. Se il prossimo del nuovo non è uguale a null, faremo il nuovo che è anche il prossimo del nuovo, un nuovo nodo.

Ora useremo la funzione "endpush" per inserire un nuovo nodo alla fine di un elenco collegato. Il nuovo nodo è stato creato e i dati passati da main () sono assegnati a "d" e il prossimo nuovo è null. Abbiamo conservato temporaneamente la testa. Il "if" controllerà se l'elenco collegato è vuoto e crea il nuovo nodo "testa". Il "while" attraverserà l'elenco collegato se l'elenco collegato non è già vuoto. Dato che la "temperatura" è il nostro ultimo nodo, abbiamo assegnato la temp successiva a "nuovo". Il precedente di nuovo è assegnato a "temp".

Il metodo DelEte () sta utilizzando diverse istruzioni "if" per scambiare successivo e precedente di Del-Node e nodo Head. Infine, la funzione "gratuita" viene utilizzata per liberare la memoria di un del-node.

La funzione show () di questo programma viene nuovamente utilizzata per stampare l'elenco doppiamente collegato.

La funzione principale () inizia l'esecuzione inizializzando il nodo della testa su null. La funzione "endpush" è richiesta per l'inserimento di un nodo alla fine passando "testa" e 5 come dati. FrontPush () viene utilizzato due volte per aggiungere un nodo nella parte anteriore dell'elenco collegato. Dopo l'utilizzo di "endPush ()", abbiamo usato due volte "AfterPush ()". Le funzioni show () e "delete ()" vengono utilizzate una dopo l'altra, mentre "elimina" viene utilizzata per eliminare ogni ultimo nodo dall'elenco collegato e lo show () lo sta visualizzando.

La compilation e l'esecuzione mostrano l'elenco collegato all'inizio.e., Dopo ogni eliminazione del nodo.

Conclusione

Questo articolo sta spiegando i semplici esempi di codice per creare un elenco doppiamente collegato in C ++ durante l'utilizzo di Ubuntu 20.04 Sistema Linux. Abbiamo anche dato un'occhiata ai modi per inserire un nodo all'inizio e alla fine dell'elenco collegato e inserisci dopo un nodo già fatto I.e., nel mezzo. La funzione di eliminazione stava eliminando ciascun nodo ogni volta dall'elenco collegato.