Elementer blir ofte lagt til bakfra og fjernes fra fronten i en normal kø. Derimot kan vi legge til og fjerne komponentene fra fronten og baksiden av en deque. Implementering av en deque i C ++ kan gjøres ved hjelp av enten en matrise eller en koblet liste.
Nedenfor er en liste over Deque's Array -implementering. Vi benyttet de sirkulære matriser for å implementere den fordi det er en dobbelkø. Den dobbelte køen er raskere og mer effektiv enn noen annen kø når det gjelder å legge til og fjerne komponentene fra begge ender.
Deques representasjon
De tidkrevende aspektene ved å gjøre forskjellige deque-prosesser inkluderer:
Typer deque
La oss sjekke ut typene relatert til Deque i C++.
Inngangsbegrenset deque
Inngang er innesperret i den ene enden, men tillatt i de to andre.
Utgangsbegrenset deque
I denne deque er produksjonen forbudt i den ene enden, men innsetting er tillatt i begge ender.
Opprette C ++ Deque -funksjon
Vi må først inkludere deque header -filen for å generere en deque i C++.
#inkludereEtter å ha importert denne filen, kan følgende syntaks brukes til å generere en deque:
# Deque deque-name;Datatypen som vi ønsker å lagre i deque er indikert med objekt-type i dette tilfellet. For eksempel: int, float, streng osv. Deque-name er et variabelt navn for dataene vi skal bruke.
Initialisere deque -funksjonen
I C ++ kan deque -funksjonen initialiseres på følgende måter:
DequeBegge disse metodene brukes til å initialisere deque. I begge disse deque -navnene initialiseres “ARR” med heltallverdier 1, 3, 7, 0, 5, 8.
Metoder for deque
Følgende er metodene for deque:
Deque datastruktur
La oss sjekke deque -datastrukturdetaljene i følgende avsnitt:
Prosedyrer på en deque
Disse trinnene må følges før de utfører de påfølgende operasjonene:
Trinn 1: Ta en N-dimensjonal matrise (Deque). I den første posisjonen, plasser to pekere og sett foran = -1 og bak = 0.
Sett opp en deque -matrise og pekere.
Innsetting foran
Trinn 1: Denne handlingen legger til en komponent foran. Sjekk frontens beliggenhet.
Hvis fronten er mindre enn 5, må du tilbakestille fronten til N-1 (siste indeks).
Steg 2: Reduser fronten med 1 om nødvendig. Legg nå den nye tasten N i matrisen [foran]. La oss anta n = 6.
Innføring bak
Trinn 1: Denne handlingen legger til en komponent i sjeldne. Forsikre deg om at matrisen ikke er full.
Steg 2: Hvis køen er full, tilbakestiller bakverdien til 0 (r = 0). Ellers løfter du det sjeldne med 1.
Trinn 3: I en matrise [bak], legg til den nye tasten 6.
Fjern fra fronten
Trinn 1: Et element foran fjernes under prosessen. Forsikre deg om at deque ikke er tom.
Steg 2: Sletting er ikke mulig hvis deque er tom (foran = -1) (understrømningstilstand). Sett bare fronten = -1 bare og bakre = -1 hvis deque består av ett element som for eksempel foran = bak. Tilordne verdien til fronten (foran = 0) hvis fronten er på slutten (foran = n - 1). Hvis ikke, sett fronten foran = foran+1.
Fjern bakfra
Trinn 1: Et element på slutten fjernes under prosessen. Forsikre deg om at deque ikke er tom.
Steg 2: Sletting er ikke mulig hvis deque er tom (foran = -1) (understrømningstilstand). Sett fronten = -1 og bakre = -1 Hvis deque bare har et enkelt element (foran = bak). Ellers fortsett med følgende trinn. La oss bevege oss mot fronten, bak = n - 1 hvis baksiden er foran (bak = 0). Hvis ikke, sett sjelden = sjelden-1.
Eksempel 1: Opprette deque
I dette eksemplet lager vi en deque. Vi inkluderer først overskriftsfilene våre "#include" og #include hvor #include kommanderer forbehandleren til å inkludere overskriftsfilen iostream og deque som inneholder alle programmets funksjoner.
#inkludereEtter det beskriver vi en skjerm _deque -funksjon som brukes til å utføre deque -verdiene som vi tildeler den.
Flytting inn i hovedfunksjonen vår, indikerer Int Main () at vår funksjon må returnere en heltallverdi ved slutten av utførelsen, som vi gjør ved å returnere 0 etter programmets konklusjon ved å bruke en enhetlig initialisering “Deque MyDeque 4, 2, 7, 7, 7, 7, 7, 7 , 5,8 ”. I denne "int" er datatypen av verdier som vi tildelte, og mydeque er navnet som vi brukte for vår Deque. Vi tildelte heltallverdiene til detque som heter MyDeque som er 4, 2, 7, 5, 8. For å vise vår deque, brukte vi for -loopen til en fast størrelse. Og så trykket vi på Run- eller F7 -knappen for å få utdataene fra programmet.
Eksempel 2: Legge til flere verdier til en deque
I dette eksemplet legger vi til flere verdier til en deque. Etter å ha lagt til de nødvendige overskriftsfilene for dette programmet, flytter vi inn i hovedfunksjonen til heltalldatatypen "Deque var 0, 1, 2". I denne "int" er datatypen av verdier som vi tildelte, og "var" er navnet som vi brukte for vår Deque. Vi tildeler heltallverdiene til deque som heter "var" som er 0, 1 og 2. Deretter skyver vi to elementer, element 8 foran av deque og element 5 på slutten av deque, ved hjelp av Push_front () og push_back () -funksjonene til deque. Så den resulterende deque som vi har er 8, 0, 1 og 5.
#inkludereNår vi er ferdige med kodingen av dette eksemplet, samler vi og utfører det i en hvilken som helst kompilator. Resultatet skildrer den forventede utdataene fra forrige kode.
Eksempel 3: Oppdatering av elementer i spesifiserte indekser
I dette eksemplet oppdaterer vi verdiene i en deque etter å ha inkludert overskriftsfilene våre “#include” og “#include” for denne kjørbare koden.
#inkludereNå går vi mot hovedfunksjonen vår der vi først initialiserte vår deque som heter "var" med verdier 1 og 2. Deretter bruker vi en for loop for å vise verdiene til vår initialiserte deque. For å oppdatere deque -verdiene bruker vi at () -funksjonen (som vi vet, at () -funksjonen brukes til å referere til den spesifiserte posisjonen i deque) ved indeks 0 og 1, og tilordne nye verdier til “var”. Disse er 3 og 4. Deretter er vår oppdaterte dequeue 3 og 4. Etter å ha gjort koden vår klar, sammenstiller vi den ved hjelp av et hvilket som helst kompilatorverktøy. Her er ønsket utgang av koden vår:
Eksempel 4: Bruke iterator for å fjerne verdiene
I dette eksemplet bruker vi iteratorene for å få tilgang til elementene i deque. Et objekt som peker på et element inne i en beholder kalles en iterator.
#inkludereDeque kan itereres både fremover og bakover ved bruk av deque :: cbegin og deque :: cend, og på begge måter ved å bruke deque :: crbegin og deque :: crend.
Til å begynne med opprettet vi en iterator som kan peke på et deque av heltall som heter ”var”. Deretter pekte vi på følgende elementer ved hjelp av "var_inter" iterator. Iteratoren som start () -metoden returnerer peker på det første elementet. "Begynn () + 1" genererer en iterator ved hjelp av elementets indeks 1 som utgangspunkt. Som du ser, bruker vi var.slutt () - 1 i stedet for var.slutt().
Dette er fordi iteratoren for slutten () -metoden lenker til en iterator som går forbi det siste elementet. For å få det siste elementet, trekker vi 1. Vi bruker indireksjonsoperatøren * for å oppnå verdien av et element etter å ha brukt inter_var for å peke på det.
Operasjoner av Deque
De grunnleggende operasjonene som kan utføres på Deque er som følger:
Konklusjon
Deque er det største alternativet fordi det er raskere og hjelper koden til å kjøre raskere. Deque fungerer bedre for loggsekvenser. Denne artikkelen er basert på deque implementering og dens viktigste metoder, som hjelper oss å endre deque i henhold til våre behov. Vi tar sikte på å forklare deque og dens metoder så vel som med eksempler på hvordan du bruker deque og når vi skal bruke den. Verktøyet som vi brukte til å implementere kode er C ++ -kompilatoren. Vi gjorde en oppriktig innsats for å gjøre denne opplæringen så enkel og så forståelig for deg som mulig.