Så nå vet vi hva som er en grunnleggende kø, men hva med prioriteringskøen? I prioriteringskøen har hvert element som kommer inn i køen to verdier, en prioriteringsverdi og dataene. Elementene som har samme prioriteringsverdi vil bli utført basert på FIFO (først inn og først ut) Men elementer med høyere prioritet enn andre vil bli utført først uansett når de ble lagt inn i køen.
Dette er et avansert datastrukturemne, så vi antar at du er kjent med hvordan JavaScript fungerer og de grunnleggende funksjonalitetene til JavaScript. For å implementere en prioriteringskø i JavaScript må vi først vite hvordan vi skal implementere en enkel kø i JavaScript.
Implementering av en kø i JavaScript
Datastrukturkonseptene som køer, stabler, hauger eller prioriterte køer implementeres ved hjelp av matriser i JavaScript.
La oss definere en funksjon som vil definere strukturen vår:
funksjonskø ()Vi vet at køer implementeres med matriser, så vi skal lage en matrise som heter Collections
Inne i funksjonen:
Array = [];For å implementere køens datastruktur trenger vi for å implementere følgende funksjonaliteter:
Disse funksjonalitetene blir alle enkelt lagt til ved å bruke følgende kodelinjer:
funksjonQueue ()Nå, at vi har datastrukturen klar, må vi lage et objekt som er kartlagt til denne strukturen, vi gjør det ved å bruke linjen:
var newqueue = new kø ();Nå trenger vi noen elementer som skal plasseres i køen, vi gjør det ved å bruke følgende linjer:
newqueue.enqueue ('a');For å se på hvordan køen vår ser ut akkurat nå, kan vi kalle utskriftsfunksjonen slik:
newqueue.skrive ut();Vi får følgende utgang på konsollen vår:
For å teste, hvis første-inn og første-ut-implementeringen fungerer som den skal, vil vi avgjøre et element fra listen, og skrive ut den fremste verdien og deretter skrive ut hele gjenværende køen med følgende linjer:
newqueue.dequeue ();Den komplette kodebiten til køstrukturen er:
funksjonQueue ()Når vi utfører denne koden, kan vi observere følgende resultat på konsollen:
Så da vi kalte Dequeue -funksjonen, fjernet det det første elementet fra listen. Etter det sjekket vi etter det fremste elementet i køen som var “B”. Så skrev vi ut køen igjen, og det ga oss den gjenværende køen i riktig rekkefølge. Dette betyr at køimplementeringen vår fungerer perfekt:
Implementering av en prioriteringskø i JavaScript
Vi vet at forskjellen mellom en normal kø og en prioriteringskø er at elementene i prioriteringskøen inneholder en prioriteringsverdi sammen med dataene deres. Dette betyr at all funksjonaliteten til prioriteringskøen er den samme som en normal kø bortsett fra Enqueue -funksjon.
I prioriterte køer plasserer enqueue -funksjonen, det høyere prioriterte elementet før det lavere prioriterte elementet. Og hvis to eller flere elementer har samme prioritet, plasseres nylig tilførte elementer i den senere enden av køen for å opprettholde en første og første-out verdsettelsesmetode.
Så når vi husker at vi kan skrive den nye enqueue -funksjonen for prioriteringskøen med følgende kodelinjer:
dette.enqueue = funksjon (newMem)Det første vi gjør i enqueue -funksjonen er at hvis samlingen er tom, så skyver vi bare elementet på køen:
hvis dette.er tom())Hvis køen ikke er tom:
Hele enqueue funksjon vil se slik ut:
dette.enqueue = funksjon (newMem)Resten av prioriteringskøfunksjonene er stort sett de samme som normal kø, med en liten endring i dequeue -funksjonen for bare å vise navnet og ikke verdien av elementet. Hele prioritert kølodsutdrag er som:
FunctionPriorityQueue ()På tide å sette elementer i køen ved hjelp av følgende kodelinjer:
var pq = new PriorityQueue ();Som du kan se, er første prioritet “Microsoft” element med verdi 1. Det må være i starten av køen selv om den ble lagt til på 3. plass.
Nå, hvis vi kaller Dequeue -funksjonen og deretter utskriftsfunksjonen igjen, bør det første elementet fjernes fra listen:
pq.dequeue ();Der du går, fungerer vår prioriteringskø perfekt.
Konklusjon
Køer er datastrukturkonsepter som fungerer med verdsettelsesmetoden til første og første-ut. Tilsvarende fungerer prioriterte køer med verdsettelse av første og første-ut, men med en ekstra verdi av "prioritet", vil elementet med høyest prioritet bli utført først uansett når de ble lagt til i køen. I dette innlegget lærte vi hvordan vi implementerer en enkel kø i JavaScript og hvordan du bruker den datastrukturen til å implementere arbeidet med en prioriteringskø.