Implementering av dobbelt koblet liste C ++

Implementering av dobbelt koblet liste C ++
En dobbelt koblet liste er det strukturelle konseptet i C ++ som består av 1 eller flere noder. En enkelt node må ha tre deler i.e., Data, en referanse mot den forrige noden, og den neste kommende noden. Den aller første noden sies å være "hodet" -noden som brukes til å få tilgang til den generelle koblede listen. Den aller siste noden på en koblet liste har alltid nullverdien. Hvis du er ny på dette konseptet og leter etter autentiske ressurser for å få kunnskap, er denne guiden for deg.

La oss starte denne artikkelen med den nye C ++ -filopprettelsen. Vi må opprette det ved hjelp av den terminale "berørings" -spørsmålet. Etter opprettelsen av filen er vår neste oppgave å åpne den og opprette noen C ++ -kode. For åpningen kan du benytte deg av hvilken som helst innebygd redaktør av Ubuntu 20.04 Som en tekstredaktør, Vim Editor eller GNU Nano Editor. Så vi bruker "Nano" -instruksjonen på skallet vårt for å åpne dobbelt.CC -fil i den.

Eksempel 01:

La oss lage et grunnleggende eksempel på C ++ -kode for å opprette en dobbeltkoblet liste. Etter filåpningen har vi lagt til iostream. C ++ standard navneområdet vil bli brukt. Etter dette har vi opprettet en nodestruktur som heter “Node” med noen av dens elementer. Den inneholder heltallvariabelen “D” som datadel. Deretter har vi definert tre nye nodestrukturer. “P” -noden viser den forrige noden, “N” viser neste node, og hodeknuten “H” er spesifisert null som en annen node.

Nå er ovennevnte struktur til ingen nytte før vi legger til og viser noen noder i programkoden. Vi bruker add () -funksjonen for å få nodedataene fra Main () -funksjonen. På den første linjen har vi opprettet en ny node “New Node” ved å bruke strukturen “Node” og tilordne den et minne som er lik størrelsen på en “node”. "->" -tegntegnene brukes til å referere til nodedelene i.e., Neste, tidligere, data osv. Dermed har vi henvist til dataene fra en ny node ved hjelp av -> synge og legge til data som er bestått av Main () -funksjonen i parameteren "ND" i "D" -variabelen til en ny node. Den forrige noden til en ny node vil bli initialisert til NULL, og den neste noden vil være et "hode". "IF" -uttalelsen er her for å sjekke at verdien av hodet "h" ikke er lik null. Hvis verdien av "H" ikke er null, vil den gjøre den forrige noden til en "hode" -node, en ny node. Dessuten vil hodet være en ny node også jeg.e., har en verdi av en ny node.

Her kommer "show ()" -funksjonen for å vise den opprettede noden. Innenfor den har vi laget en "PTR" -node og gjort den til et "hode". "Mens" -løkken er her for å bekrefte at verdien av "PTR" ikke er null. Mens tilstanden er fornøyd, vil cout -setningen vise dataene som er lagt til av en bruker på samme, men motsatt måte. Nå vil de neste av “PTR” -nodene bli “PTR”.

Her er vår viktigste () -funksjon der utførelsen starter. Vi har ringt "Legg til" -funksjonen 4 ganger for å lage en ny node og legge til data i "D" -variabelen til en ny. COUT -uttalelsen viser oss at vi vil ringe "show" -funksjonen for å vise alle nodene vi har lagt til.

Nå er det på tide å kompilere denne C ++ -koden i Ubuntus G ++ -kompilator for C ++ -språket. Når du kjører koden med "./en.ut ”, vi har blitt vist med de 4 nodedataene i motsatt rekkefølge i.e., Vi har lagt til i 4, 12, 2, 7 ordre og den returnerer i 7, 2, 12, 4, og viser den siste kommet første serveringsordre.

Eksempel 02:

La oss se på et annet eksempel på en dobbeltbundet liste. Opprettet en struktur “Node” med den samme variabelen “D”, neste node “N” og forrige node “P”.

Nå har vi brukt FrontPush () -funksjonen for å sette inn en node i starten med dataene i.e. Hodeknute. Vi har laget en ny node i den jeg.e. “Newnode” ved hjelp av strukturen “Node*” syntaks. Etter dette refererer vi til dataene "D", den neste noden som vil være et "hode", og den forrige noden som vil være null. "Hvis" -uttalelsen ble brukt for å sjekke at verdien av hodet ikke er null. Hvis hodet ikke er "null" allerede, må vi gjøre det forrige hodet til en ny node, og overskriften vil peke mot den nye noden.

AfterPush () -funksjonen er her for å sette inn en ny node etter vår allerede laget node. "IF" -uttalelsen vil sjekke om den forrige noden er lik null eller ikke og vise at ved å bruke "cout". En ny node er blitt dannet og data vil bli satt inn i “D”. Den "neste" av det nye vil bli den neste av de forrige, og den neste av de forrige vil bli en ny node. Den forrige av nye vil bli den tidligere selv. Hvis den neste av nye ikke er lik null, vil vi gjøre den nye som også er på den nye, en ny node.

Nå vil vi bruke "endpush" -funksjonen for å sette inn en ny node på slutten av en koblet liste. Den nye noden er opprettet og data ført av Main () er tilordnet “D” og neste av New Is Null. Vi har lagret hodet midlertidig. "IF" vil sjekke om den koblede listen er tom og gjøre den nye noden til "Head". "Mens" vil krysse den koblede listen hvis den koblede listen allerede ikke er tom. Siden "temp" er vår siste node, har vi tildelt neste temp til "ny". Den forrige av nye er tilordnet “Temp”.

Delete () -metoden bruker forskjellige “IF” -uttalelser for å utveksle neste og tidligere av Del-Node, og hodeknute. Til slutt brukes den "gratis" funksjonen til å frigjøre minnet om en del-node.

Show () -funksjonen til dette programmet brukes igjen til å skrive ut den dobbeltkoblede listen.

Hoved () -funksjonen begynner å utføre ved å initialisere hodeknuten til null. "Endpush" -funksjonen blir kalt for å sette inn en node på slutten ved å passere "hode" og 5 som data. FrontPush () brukes to ganger til å legge til en node foran den koblede listen. Etter "endpush ()" bruk igjen, har vi brukt "etterpush ()" to ganger. Visningene () og "Delete ()" brukes etter hverandre, mens "slett" brukes til å slette hver siste node fra den koblede listen, og show () viser det.

Samlingen og utførelsen viser start til slutt koblet liste I.e., Etter hver node -sletting.

Konklusjon

Denne artikkelen forklarer de enkle kodeeksemplene for å lage en dobbelt koblet liste i C ++ mens du bruker Ubuntu 20.04 Linux -system. Vi har også sett på måtene å sette inn en node i starten og slutten av den koblede listen og sette inn etter en allerede laget node I.e., imellom. Slettfunksjonen slettet hver node hver eneste gang fra den koblede listen.