Og i Python
En deque står for Double-Ended Queue. Det er en spesiell type datastruktur som lar deg legge til og fjerne elementer fra begge ender effektivt.
I motsetning til vanlige køer (som vanligvis følger First In First Out) støtter en deque både FIFO- og LIFO-operasjoner. Dette gjør det veldig fleksibelt og nyttig i virkelige applikasjoner som oppgaveplanlegging problemer med skyvevinduer og sanntids databehandling.
Eksempel:
Python from collections import deque # Declaring deque de = deque ([ 'name' 'age' 'DOB' ]) print ( de )
Produksjon
deque(['name' 'age' 'DOB'])
Hvorfor trenger vi deque
- Den støtter O(1)-tid for å legge til/fjerne elementer fra begge ender.
- Det er mer effektivt enn lister for front-end-operasjoner.
- Den kan fungere både som en kø (FIFO) og en stabel (LIFO).
- Ideell for å planlegge problemer med skyvevinduer og databehandling i sanntid.
- Den tilbyr kraftige innebygde metoder som appendleft() popleft() og rotere().
Typer begrenset Deque Input
- Inndatabegrenset Deque : Inndata er begrenset i den ene enden, mens sletting er tillatt i begge ender.
- Utgangsbegrenset Deque : utgangen er begrenset i den ene enden, men innsetting er tillatt i begge ender.
Operasjoner på dekk
Her er en tabell som viser innebygde operasjoner for en deque i Python med beskrivelser og deres tilsvarende tidskompleksitet:
| Operasjon | Beskrivelse | Tidskompleksitet |
|---|---|---|
| legge til (x) | Legger til x til høyre ende av bordet. | O(1) |
| appendleft (x) | Legger til x til venstre ende av bordet. | O(1) |
| pop() | Fjerner og returnerer et element fra høyre ende av deque. | O(1) |
| popleft() | Fjerner og returnerer et element fra venstre ende av dequen. | O(1) |
| forlenge (gjentagbar) | Legger til alle elementer fra iterable til høyre ende av bordet. | Greit) |
| extendleft(iterbar) | Legger til alle elementer fra iterable til venstre ende av deque (omvendt rekkefølge). | Greit) |
| fjerne (verdi) | Fjerner den første forekomsten av value fra dek. Hever ValueError hvis ikke funnet. | På) |
| rotere (n) | Roterer bordet n trinn til høyre. Hvis n er negativ roterer til venstre. | Greit) |
| klar() | Fjerner alle elementer fra bordet. | På) |
| telle (verdi) | Teller antall forekomster av value i dekket. | På) |
| indeks(verdi) | Returnerer indeksen for den første forekomsten av value i dekket. Hever ValueError hvis ikke funnet. | På) |
| omvendt() | Reverserer elementene i dekket på plass. | På) |
Legge til og slette elementer fra kø
- legg til (x): Legger til x til høyre ende av deque.
- appendleft(x): Legger til x til venstre ende av deque.
- forlenge (iterbar): Legger til alle elementer fra den iterable til høyre ende.
- extendleft(iterbar): Legger til alle elementene fra den iterable til venstre ende (i omvendt rekkefølge).
- fjern(verdi): Fjerner den første forekomsten av den angitte verdien fra dequen. Hvis verdien ikke blir funnet, oppstår en ValueError.
- pop(): Fjerner og returnerer et element fra høyre ende.
- popleft(): Fjerner og returnerer et element fra venstre ende.
- klar(): Fjerner alle elementer fra bordet.
from collections import deque dq = deque ([ 10 20 30 ]) # Add elements to the right dq . append ( 40 ) # Add elements to the left dq . appendleft ( 5 ) # extend(iterable) dq . extend ([ 50 60 70 ]) print ( 'After extend([50 60 70]):' dq ) # extendleft(iterable) dq . extendleft ([ 0 5 ]) print ( 'After extendleft([0 5]):' dq ) # remove method dq . remove ( 20 ) print ( 'After remove(20):' dq ) # Remove elements from the right dq . pop () # Remove elements from the left dq . popleft () print ( 'After pop and popleft:' dq ) # clear() - Removes all elements from the deque dq . clear () # deque: [] print ( 'After clear():' dq )
Produksjon:
After extend([50 60 70]): deque([5 10 20 30 40 50 60 70])
After extendleft([0 5]): deque([5 0 5 10 20 30 40 50 60 70])
After remove(20): deque([5 0 5 10 30 40 50 60 70])
After pop and popleft: deque([0 5 10 30 40 50 60])
After clear(): deque([])Tilgang til vare og lengde på deque
- Indeksering: Få tilgang til elementer etter posisjon ved å bruke positive eller negative indekser.
- bare(): Returnerer antall elementer i tabellen.
import collections dq = collections . deque ([ 1 2 3 3 4 2 4 ]) # Accessing elements by index print ( dq [ 0 ]) print ( dq [ - 1 ]) # Finding the length of the deque print ( len ( dq ))
Produksjon
1 4 7
Telle rotasjon og reversering av en deque
- antall (verdi): Denne metoden teller antall forekomster av et spesifikt element i dequen.
- rotere(n): Denne metoden roterer deque med n trinn. Positiv n roterer til høyre og negativ n roterer til venstre.
- omvendt(): Denne metoden reverserer rekkefølgen på elementene i tabellen.
from collections import deque # Create a deque dq = deque ([ 10 20 30 40 50 20 30 20 ]) # 1. Counting occurrences of a value print ( dq . count ( 20 )) # Occurrences of 20 print ( dq . count ( 30 )) # Occurrences of 30 # 2. Rotating the deque dq . rotate ( 2 ) # Rotate the deque 2 steps to the right print ( dq ) dq . rotate ( - 3 ) # Rotate the deque 3 steps to the left print ( dq ) # 3. Reversing the deque dq . reverse () # Reverse the deque print ( dq )
Produksjon
3 2 deque([30 20 10 20 30 40 50 20]) deque([20 30 40 50 20 30 20 10]) deque([10 20 30 20 50 40 30 20])