Poiché l'elenco collegato circolare ha una dimensione dinamica, la memoria può essere allocata solo quando è necessaria. L'articolo dimostrerà l'elenco circolare collegato con le illustrazioni del programma C ++ in C++.
Applicazione dell'elenco circolare collegato
Un elenco circolare collegato è quello in cui tutti i nodi sono collegati in un cerchio. Non esiste un elemento null nell'elenco collegato circolare. Un punto di partenza può essere qualsiasi nodo. A partire da qualsiasi luogo nell'elenco, possiamo attraversare l'intero elenco. Tutto quello che dobbiamo fare ora è aspettare fino a quando il primo nodo è di nuovo raggiungibile. Lì abbiamo alcune applicazioni di un elenco circolare collegato come segue:
Esempio 1: Creazione di un attraversamento dell'elenco collegato circolare in C++
L'unica differenza è che in un elenco circolare legato Elenco. L'implementazione del codice di attraversamento dell'elenco circolare in C ++ è mostrata di seguito.
Nel primo passo, abbiamo definito una classe come "nodo", in cui abbiamo dichiarato una variabile INT come "mydata". La variabile "mydata" è i dati per il nodo. Il puntatore è anche dichiarato in questa classe come "Next" per il puntatore al nodo successivo nell'elenco circolare collegato.
Dopo il "nodo" di classe, abbiamo una funzione chiamata "Push", che inserisce il nodo all'inizio dell'elenco circolare collegato. Abbiamo definito il costruttore, che passa il riferimento del puntatore head_node della classe "nodo" e la variabile "mydata" come parametro. Il nuovo puntatore viene creato come "myptr", che ha chiamato e assegnato il "nodo".
Quindi, il puntatore della temperatura viene dichiarato "temp", che ha il head_node. Ci sono puntatori come "PTR1" e "PTR2" che sono chiamati "MyData" e puntatore "Next" e prendono i loro indirizzi. Successivamente, abbiamo un'istruzione if in cui c'è solo head_node ed è nullo. Se l'elenco collegato circolare è nullo, aggiungi l'ultimo nodo con l'aiuto di un ciclo while. Altrimenti, l'istruzione else verrà eseguita in cui la testa punta al primo nodo dell'elenco.
Quindi, abbiamo creato un'altra funzione come "displaylist" e, nel costruttore di questa funzione, abbiamo appena superato la testa del nodo dell'elenco circolare collegato. La funzione visualizzerà i nodi in un elenco collegato circolare tramite un ciclo do-while dopo l'istruzione IF, che ha la condizione che la testa del nodo non dovrebbe essere uguale a null.
Infine, esiste il metodo principale, che testerà l'implementazione descritta in precedenza. Il capo puntatore del "nodo" di classe è stato impostato su "null" nel metodo principale. Quindi, aggiungi i dati all'elenco collegato con l'aiuto del metodo push (). La "testa" viene passata alla funzione "displaylist", che mostrerà l'elenco collegato circolare.
#includereL'elenco collegato circolare implementato nell'output del codice precedente viene visualizzato nella seguente immagine.
Esempio2: dividere l'elenco circolare collegato in due metà in C++
Il seguente programma rende possibile la suddivisione di un elenco collegato circolare in due parti. Diamo un'occhiata all'implementazione di come abbiamo diviso l'elenco collegato circolare in C++.
Innanzitutto, abbiamo un "nodo" di classe in cui abbiamo definito una variabile "elementi" e il puntatore "successivo" del nodo. I membri del "nodo" di classe sono pubblici in questo programma. Quindi, abbiamo costruito una funzione chiamata "Halveist" in cui abbiamo diviso l'elenco dall'inizio con la testa in due elenchi. Head1_node e head2_node sono riferimenti ai due nodi testa.
Nella funzione, abbiamo dichiarato due puntatori, "S_PTR" e "F_PTR", che ha la testa dell'elenco collegato. Se l'istruzione IF viene utilizzata per il nodo testa contenente un valore nullo, allora abbiamo un ciclo while che afferma che f_ptr-> successivo diventa testa se l'elenco circolare ha nodi dispari e f_ptr-> next-> successivo diventa testa se il L'elenco contiene anche nodi.
Dopo il ciclo while, abbiamo nuovamente utilizzato l'istruzione IF in cui la condizione è "se l'elenco contiene un numero uniforme di elementi, F_PTR dovrebbe essere spostato e impostare il puntatore head1_node del primo tempo". Nell'istruzione IF successiva, abbiamo impostato il head2_node nella seconda metà dell'elenco collegato.
Abbiamo assegnato S_PTR-> accanto a F_PTR-> accanto per creare il secondo mezzo circolare dell'elenco, e quindi S_PTR-> è mantenuto uguale alla testa dell'elenco e fa il primo seminterrato.
La seconda funzione viene creata come "push", che viene utilizzata per inserire un nodo all'inizio di un elenco collegato circolare con questa funzione. Nella funzione, la condizione implica se il head_node dell'elenco collegato circolare non è nullo, quindi impostato accanto all'ultimo nodo. La terza funzione, "DisplayList", viene generata per la visualizzazione dell'elenco collegato circolare.
Quindi, abbiamo la funzione principale, in cui abbiamo inizializzato la testa, il head1_node e head2_node vuoto. Il metodo push viene utilizzato per inserire i valori nell'elenco collegato e tramite il comando cout, verranno visualizzati l'elenco circolare collegato e l'elenco collegato circolare diviso.
#includereQui abbiamo l'output dell'elenco collegato circolare originale, l'output del primo elenco collegato a metà circolare e la seconda metà dell'elenco collegato circolare.
Esempio 3: ordinamento dell'elenco collegato circolare in C++
Nel primo passo, abbiamo una classe "nodelist", che contiene variabili membri e puntatori della classe. Quindi, abbiamo creato una funzione "Sortinsertion", che inserisce un nuovo nodo in un elenco ordinato. Questa funzione richiede un puntatore al nodo della testa perché può modificare la testa dell'elenco collegato input.
Successivamente, abbiamo un'istruzione IF per nodelist, che contiene solo nodo in esso. Il head_node punta al nuovo nodo. Nell'istruzione altro, se abbiamo assegnato i dati di NODELIST alla corrente.
Qui, viene aggiunto un nuovo nodo prima del nodo. Il blocco IF-Else ha un ciclo while che ha una condizione; Se il valore è inferiore al valore della testa, il nodo successivo o ultimo deve essere modificato. Il ciclo while identificherà solo il nodo prima del punto di inserimento.
Successivamente, abbiamo realizzato un new_nodelist, il nodo successivo che individua il nodo successivo del puntatore. Quindi, Current-> Next, dobbiamo cambiare la posizione del puntatore a quella successiva. Per stampare i nodi dell'elenco collegato, abbiamo definito una funzione "showlist".
Alla fine, abbiamo la funzione principale in cui abbiamo inizializzato un array e iterali sul array specificato, che sarà un array ordinato.
#includereL'elenco collegato circolare ordinato viene visualizzato nella seguente schermata di Ubuntu.
Conclusione
Questo termina la nostra discussione su come inserire, dividere e ordinare i nodi in un elenco circolare collegato in C++. Un elenco circolare collegato viene utilizzato in molte applicazioni che richiedono molta flessibilità. Spero che questo ti aiuti a rimuovere l'ambiguità relativa all'elenco circolare collegato in C++.