I datavetenskap är stapel och kö två abstrakta datatyper som är enkla datastrukturer som använder pekare för att representera dynamiska uppsättningar. En skillnad kan emellertid noteras mellan dem baserat på deras implementeringar. Grundläggande operationer för att infoga och ta bort element stöds av både stapel och kö. De största skillnaden mellan stack och kö är det a stack redskap Senast i första utgåvan eller LIFO-politiken, medan a kö redskap Först i första utgå eller FIFO-politik.
En stapel är a linjär datastruktur som fungerar som en samling av element. Endast ena änden av strukturen är tillgänglig för att utföra operationer på element, och det kallas allmänt som topp. Två huvudoperationer kan utföras på en stapel; tryck och pop-. En "insert" -operation som utförs på en stack kallas tryck och en "radering" -operation som utförs på en stapel heter pop-.
De tryck operation lägger till ett element överst i samlingen. Utföra en pop- operationen tar bort ett element som ligger högst upp i samlingen. Eftersom elementen som tas bort från stapeln är i omvänd ordning till ordningen för deras tillägg, är strukturen känd att följa Last In First Out eller ett LIFO-tillvägagångssätt. Med tanke på denna implementering har de lägsta elementen varit på stacken för längst.
En stapel anses vara en begränsad datastruktur på grund av det lilla antalet operationer som kan utföras på en stapel. Dessutom a titt operation kan implementeras för att returnera värdet på toppelementet utan att modifiera elementet. Dessutom har implementeringar av en stapel ofta en Är tom funktionen för att kontrollera om stacken är tom. I miljöer som är starka beroende på staplar fungerar funktioner som radera, swap / utbyte och rotera kan också tillhandahållas. Men dessa är inte nödvändiga för en stacks grundläggande funktionalitet.
En stapel har a begränsad kapacitet. Om stapeln är full går den till ett överflödigt tillstånd, vilket betyder att det inte finns tillräckligt med utrymme för att fler element ska tryckas på stapeln. Om stacken är tom, och det finns inga element att dyka är stacken i ett underflöde.
En stapel kan enkelt genomföras med hjälp av arrayer eller länkade listor på de flesta programmeringsspråk på hög nivå.
Stackar är tillämpliga på områden som utvärdering av aritmetiska uttryck, körtidshantering, trädgränsning, syntaxparsning, etc.
En kö är en linjär datastruktur som också fungerar som en samling av element. Båda ändarna av en kö är tillgängliga för att utföra operationer på element och kallas vanligtvis huvud och svans. Två huvudoperationer kan utföras i en kö; enqueue och dequeue. enqueue är insättningsoperationen medan dequeue raderas borttagningsoperationen i en kö.
När ett element är inskriven läggs det till i könans svans. Utföra en dequeue operationen tar bort ett element från könshuvudet. Eftersom de enqueued-elementen alltid avkodas i samma ordning som de antecknades, sägs strukturen implementera ett First In First Out eller FIFO-tillvägagångssätt.
Liknande en stack är en kö också a begränsad datastruktur med tanke på det lilla antalet operationer som kan utföras. Dessutom a titt operationen kan implementeras i en kö, som kommer att returnera värdet av elementet i köens huvud utan att avkoda det. Andra primitiva operationer i en kö kan innehålla Är tom, Är full, och visa. De Är tom funktionen kontrollerar om köen är tom och Är full kolla om kön är full. De visa funktionen kan användas för att presentera innehållet i kön. Men igen är dessa funktioner inte kritiska för genomförandet av en kö.
Till skillnad från en stapel kan köer implementeras för att ha en begränsad kapacitet eller ingen specifik kapacitet. Ett överloppstillstånd för en kö uppträder när ett element är inskriven till en fullständig kö och ett underflödesläge uppstår när ett element avkodas, men köen är tom.
Könstypen kan skilja sig från hur enqueuing och dequeuing-operationer utförs på element. Cirkelkö, prioritetskö och dubbelkön är de speciella kötyperna.
Genom att använda arrays och länkade listor kan köer implementeras effektivt på högnivå programmeringsspråk.
Köer är tillämpliga på många områden, såsom simuleringar, satsvis bearbetning i operativsystem, schemaläggningsalgoritmer, buffertförfrågningar, multiprogrammeringsplattformssystem etc..
Tillgänglighet till element
I en stack, Operationer på data kan endast utföras överst på stapeln.
I en kö, båda ändarna av kön är tillgängliga för operationer. En infogning sker på köens baksida, och en deletion kan göras i huvudet.
Beteende
en stack är en LIFO datastruktur, där elementet som lagts till sist i stapeln är det första elementet som ska tas bort. Avlägsnandet är i omvänd ordning till tillsatsordningen.
en kö är en FIFO datastruktur, där elementet som lagts till först i kön blir det första elementet som ska tas bort. Order för infogning och borttagning är densamma.
Grundläggande operationer
I en stack, ett element sätts in på toppen av stapeln och tas bort från toppen också.
Men i en kö, ett element infogas i slutet av en kö och avlägsnas från framsidan.
Kapacitet
en stack har en begränsad kapacitet.
en kö kan vara avgränsad kapacitet, men är vanligtvis implementerad utan en specifik kapacitet.
Avfall av minnesutrymme
Sedan a stack behöver bara en pekare för att hålla koll på toppen av stapeln, det finns inget slöseri med minnesutrymmet.
en kö behöver två pekare fram och bak för att hålla reda på båda ändarna av köen. Därför är det slöseri med minnesutrymme.
Både stack och kö används för att behålla beställda listor med element. Medan en stapel är en LIFO datastruktur, implementerar en kö ett FIFO-tillvägagångssätt. Endast ena änden av en stapel är tillgänglig för huvudoperationer, men båda ändarna av en kö kan användas.