Ettersom den sirkulære koblede listen har en dynamisk størrelse, kan minnet bare tildeles når det trengs. Artikkelen vil demonstrere den sirkulære koblede listen med C ++ programillustrasjoner i C++.
Bruk av sirkulær koblet liste
En sirkulær koblet liste er en der alle nodene er koblet sammen i en sirkel. Det er ikke noe nullelement i den sirkulære koblede listen. Et begynnelsespunkt kan være hvilken som helst node. Med utgangspunkt i et hvilket som helst sted på listen, kan vi krysse hele listen. Alt vi trenger å gjøre nå er å vente til den første noden er nådd igjen. Der har vi noen applikasjoner av en sirkulær koblet liste som følger:
Eksempel 1: Opprette sirkulær koblet liste Traversal i C++
Den eneste forskjellen er at noden i den siste posisjonen i en sirkulær koblet liste vil ha sin neste lenke til listen Liste. Implementeringen av sirkulær koblet listekode i C ++ er vist nedenfor.
I det første trinnet har vi definert en klasse som "node", der vi har erklært en int -variabel som "mydata". Variabelen “MyData” er dataene for noden. Pekeren er også erklært i denne klassen som "neste" for pekeren til neste node i den sirkulære koblede listen.
Etter klassen “Node” har vi en funksjon som heter “Push”, som setter inn noden i begynnelsen av den sirkulære koblede listen. Vi definerte konstruktøren, som passerer head_node -pekerreferansen til klassen “Node” og variabelen “MyData” som en parameter. Den nye pekeren er opprettet som “MyPTR”, som har kalt og tildelt “Node”.
Deretter blir temp -pekeren erklært som "temp", som har head_node. Det er pekere som “PTR1” og “PTR2” som kalles “MyData” og Pointer “Next” og tar adressene sine. Etter det har vi en IF -uttalelse der det bare er head_node, og det holdes null. Hvis den sirkulære koblede listen er null, kan du legge til den neste til den siste noden ved hjelp av en stundsløyfe. Ellers vil den andre uttalelsen bli utført der hodet peker på listenes første node.
Deretter har vi opprettet en annen funksjon som "DisplayList", og i konstruktøren av denne funksjonen har vi nettopp passert nodehodet på den sirkulære koblede listen. Funksjonen vil vise nodene i en sirkulær koblet liste gjennom en do-mens Loop etter IF-setningen, som har betingelse av at noden ikke skal være lik null.
Endelig er det hovedmetoden, som vil teste implementeringen beskrevet tidligere. Pekerhodet til klassen “Node” er satt til “Null” i hovedmetoden. Legg deretter til dataene i den koblede listen ved hjelp av Push () -metoden. "Head" sendes til funksjonen "DisplayList", som viser den sirkulære koblede listen.
#inkludereDen sirkulære koblede listen implementert i ovennevnte kodeutgang vises i følgende bilde.
Eksempel2: Del den sirkulære koblede listen i to halvdeler i C++
Følgende program gjør splitting av en sirkulær koblet liste i to mulige deler. La oss se på implementeringen av hvordan vi deler den sirkulære koblede listen i C++.
Først har vi en klasse "node" der vi har definert en variabel "elementer" og pekeren "neste" av noden. Medlemmene av klassen "Node" er offentlige i dette programmet. Deretter bygde vi en funksjon som heter "Halvelist" der vi delte listen fra begynnelsen med hodet i to lister. Head1_node og head2_node er referanser til de to resulterende koblede listene 'hodeknuter.
I funksjonen har vi erklært to tips, “S_PTR” og “F_PTR”, som har sjefen for den koblede listen. Hvis IF-setningen brukes til hodeknuten som inneholder en nullverdi, har vi en stundsløyfe som sier at F_PTR-> Neste blir hode hvis sirkulærlisten har rare noder, og F_PTR-> Neste-> Neste blir hode hvis Listen inneholder jevn noder.
Etter mens Loop har vi igjen brukt IF -setningen der tilstanden er "Hvis listen inneholder til og med antall elementer, bør F_PTR flyttes og angi Head1_Node -pekeren i første omgang". I neste IF -uttalelse har vi satt head2_node til andre halvdel av den koblede listen.
Vi har tildelt S_PTR-> ved siden av F_PTR-> ved siden av for å lage den andre halvsirkulære på listen, og deretter holdes S_PTR-> LISTE på listen og gjør den første halvsirkelen S_PTR->.
Den andre funksjonen er opprettet som "push", som brukes til å sette inn en node i starten av en sirkulær koblet liste med denne funksjonen. I funksjonen innebærer tilstanden om head_noden til den sirkulære koblede listen ikke er null, og deretter sett ved siden av den siste noden. Den tredje funksjonen, "DisplayList", genereres for at den sirkulære koblede listen skal vises.
Deretter har vi hovedfunksjonen, der vi har initialisert hodet, head1_node og head2_node tom. Push -metoden brukes til å sette inn verdiene i den koblede listen, og gjennom COUT -kommandoen vises den sirkulære koblede listen og den delte sirkulære koblede listen.
#inkludereHer har vi utdataene fra den originale sirkulære koblede listen, utdataene fra den første halvsirkulære koblede listen, og andre halvdel av den sirkulære koblede listen.
Eksempel 3: Sortering av den sirkulære koblede listen i C++
I det første trinnet har vi en "nodelist", som inneholder medlemsvariabler og pekere i klassen. Deretter har vi laget en funksjon "sortinsertion", som setter inn en ny node i en sortert liste. Denne funksjonen krever en peker til hodeknuten fordi den kan endre den koblede listenes hode.
Etter det har vi en IF -uttalelse for nodelist, som bare inneholder node i den. Head_node peker på den nye noden. I det andre, hvis uttalelse, har vi tildelt dataene fra nodelisten til gjeldende.
Her blir en ny node lagt til før hodeknuten. If-Else-blokken har en stundsløyfe som har en tilstand; Hvis verdien er mindre enn hovedverdien, må neste eller siste node endres. Mens sløyfen vil bare identifisere noden før innsettingspunktet.
Etter det laget vi en ny_nodelist, den neste noden som lokaliserer pekerens neste node. Deretter, nåværende-> Neste, må vi endre pekerens plassering til neste. For å skrive ut nodene på den koblede listen, har vi kalt en funksjon "showlist".
Til slutt har vi hovedfunksjonen der vi har initialisert en matrise og iterert over den spesifiserte matrisen, som vil være en sortert matrise.
#inkludereDen sorterte sirkulære koblede listen vises på følgende skjerm av Ubuntu.
Konklusjon
Dette avslutter diskusjonen vår om hvordan du kan sette inn, dele og sortere noder i en sirkulær koblet liste i C++. En sirkulær koblet liste brukes i mange applikasjoner som krever mye fleksibilitet. Jeg håper dette vil hjelpe deg å fjerne tvetydighet relatert til den sirkulære koblede listen i C++.