Som en stack är kön en linjär datastruktur som lagrar objekt i en First In First Out ( FIFO ) sätt. Med en kö tas det senast tillagda objektet bort först. Ett bra exempel på en kö är varje kö av konsumenter till en resurs där konsumenten som kom först serveras först.

Operationer associerade med kö är:
- Kö: Lägger till ett objekt i kön. Om kön är full, sägs det vara ett överflödestillstånd – Tidskomplexitet: O(1)
- Följaktligen: Tar bort ett objekt från kön. Föremålen skjuts i samma ordning som de skjuts. Om kön är tom, sägs det vara ett underflödestillstånd – Tidskomplexitet: O(1)
- Främre: Hämta det främre föremålet från kön – Tidskomplexitet: O(1)
- Bak: Hämta det sista föremålet från kön – Tidskomplexitet: O(1)
Implementera en kö i Python
Det finns olika sätt att implementera en kö i Pytonorm. Den här artikeln täcker implementeringen av kö med datastrukturer och moduler från Python-biblioteket. Python Queue kan implementeras på följande sätt:
är modellexempel
- lista
- samlingar.deque
- svans.svans
Implementering med hjälp av lista
List är en Pythons inbyggda datastruktur som kan användas som en kö. Istället för enqueue() och följaktligen () , bifoga() och pop() funktionen används. Men listor är ganska långsamma för detta ändamål eftersom att infoga eller ta bort ett element i början kräver att alla andra element flyttas med ett, vilket kräver O(n) tid.
Koden simulerar en kö med hjälp av en Python-lista. Det lägger till element 'a' , 'b' , och 'c' till kön och ställer dem sedan ur kö, vilket resulterar i en tom kö i slutet. Utdata visar den initiala kön, element ur kö ( 'a' , 'b' , 'c' ), och köns tomma tillstånd.
Python3
queue>=> []> queue.append(>'a'>)> queue.append(>'b'>)> queue.append(>'c'>)> print>(>'Initial queue'>)> print>(queue)> print>(>'
Elements dequeued from queue'>)> print>(queue.pop(>0>))> print>(queue.pop(>0>))> print>(queue.pop(>0>))> print>(>'
Queue after removing elements'>)> print>(queue)> |
>
sqrt java matematik
>
Produktion:
Initial queue ['a', 'b', 'c'] Elements dequeued from queue a b c Queue after removing elements []>
Traceback (most recent call last): File '/home/ef51acf025182ccd69d906e58f17b6de.py', line 25, in print(queue.pop(0)) IndexError: pop from empty list>
Implementering med hjälp av collections.deque
Kö i Python kan implementeras med hjälp av deque class från samlingsmodulen. Deque föredras framför list i de fall där vi behöver snabbare append- och pop-operationer från båda ändarna av behållaren, eftersom deque ger en O(1)-tidskomplexitet för append- och pop-operationer jämfört med list som ger O(n)-tidskomplexitet . Istället för enqueue och deque används funktionerna append() och popleft().
Koden använder endeque>fråncollections>modul för att representera en kö. Det läggs till 'a' , 'b' , och 'c' till kön och avköar dem med q.popleft()> , vilket resulterar i en tom kö. Ej kommenterar q.popleft()> efter att kön är tom skulle höja enIndexError>. Koden demonstrerar köoperationer och hanterar ett tom köscenario.
Python3
from> collections>import> deque> q>=> deque()> q.append(>'a'>)> q.append(>'b'>)> q.append(>'c'>)> print>(>'Initial queue'>)> print>(q)> print>(>'
Elements dequeued from the queue'>)> print>(q.popleft())> print>(q.popleft())> print>(q.popleft())> print>(>'
Queue after removing elements'>)> print>(q)> |
java datatyper
>
>
Produktion:
Initial queue deque(['a', 'b', 'c']) Elements dequeued from the queue a b c Queue after removing elements deque([])>
Traceback (most recent call last): File '/home/b2fa8ce438c2a9f82d6c3e5da587490f.py', line 23, in q.popleft() IndexError: pop from an empty deque>
Implementering med queue.Queue
Queue är en inbyggd modul i Python som används för att implementera en kö. queue.Queue(maxsize) initierar en variabel till en maximal storlek på maxsize. En maxstorlek på noll '0' betyder en oändlig kö. Denna kö följer FIFO-regeln.
Det finns olika funktioner tillgängliga i denna modul:
- maxstorlek – Antal artiklar tillåtna i kön.
- tömma() – Returnera True om kön är tom, False annars.
- full() – Returnera True om det finns maxsize-objekt i kön. Om kön initierades med maxsize=0 (standard), returnerar full() aldrig True.
- skaffa sig() – Ta bort och returnera en vara från kön. Om kön är tom, vänta tills ett objekt är tillgängligt.
- get_nuwait() – Returnera en vara om en är tillgänglig omedelbart, annars höj QueueEmpty.
- put(item) – Lägg en vara i kön. Om kön är full, vänta tills en ledig plats finns tillgänglig innan du lägger till föremålet.
- put_nuwait(artikel) – Lägg en vara i kön utan att blockera. Om ingen ledig slot är tillgänglig direkt, höj QueueFull.
- qsize() – Returnera antalet artiklar i kön.
Exempel: Denna kod använderQueue>klass frånqueue>modul. Den börjar med en tom kö och fyller den med ' a', 'b' , och 'c' . Efter avköning blir kön tom och '1' läggs till. Trots att den har varit tom tidigare förblir den full, eftersom den maximala storleken är inställd på 3. Koden demonstrerar köoperationer, inklusive kontroll av fullhet och tomhet.
Python3
konvertera en sträng till ett heltal
from> queue>import> Queue> q>=> Queue(maxsize>=> 3>)> print>(q.qsize())> q.put(>'a'>)> q.put(>'b'>)> q.put(>'c'>)> print>(>'
Full: '>, q.full())> print>(>'
Elements dequeued from the queue'>)> print>(q.get())> print>(q.get())> print>(q.get())> print>(>'
Empty: '>, q.empty())> q.put(>1>)> print>(>'
Empty: '>, q.empty())> print>(>'Full: '>, q.full())> |
>
java-ingång
>
Produktion:
0 Full: True Elements dequeued from the queue a b c Empty: True Empty: False Full: False>