En kø lagrer data i rekkefølge og inneholder to funksjoner: push- og pop. Push steder en vare til slutten av køen , pop fjerner elementet foran og returnerer den . En prioritert kø oppfører seg på samme måte, med ett unntak: trykk legger til elementer i kø i en bestemt rekkefølge . Arrays er ikke ideelt for en prioritert kø , de mangler fleksibilitet , noe som gjør det vanskelig å sortere køen . Men de er nyttig for å lære konseptet. Instruksjoner
en
Velg datatype din prioritet kø holder. Hvis dette er første gang du skriver en prioritert kø , velger noe enkelt , for eksempel et heltall.
2
Lag en matrise for å tjene som køen. Hvis dataene typen er heltall , og du ønsker å holde 10 elementer , vil matrisen kan opprettes ved hjelp av kode som dette : en
int [ ] arr = new int [ 10 ];
Hold tankene at 0 er den første indeksen på noe array. For å få tilgang til første indeks over arr , vil du se arr [ 0 ] , og arr [ 9 ] vil få tilgang til den siste indeksen arr. I dette tilfellet , arr [ 10 ] forårsaker en feil .
3
Bestem sortering funksjon . Det vil bli benyttet senere for å presse elementene i riktig rekkefølge. Denne funksjonen tar to innganger , så sammenligner dem . Hvis den første inngang har en høyere verdi , returnerer funksjonen 1 , hvis begge innganger har samme verdi vender tilbake til 0 , og hvis den første inngang har en lavere verdi , går den tilbake -1 . Hvis dette er første gang du skriver en sorteringsfunksjon , og dine data type valg er heltall , bør du starte med numerisk rekkefølge , der lavere tall har en lavere verdi. Sortering ved numerisk verdi , vil koden se slik ut : en
if ( første > andre ) return 1;
if ( første == andre ) return 0 ;
if ( første < andre ) returnerer -1 ;
p Dette fungerer også for andre antall datatyper , som dobler og flyter . Hvis du bruker strenger , kan du sortere etter alfabetisk rekkefølge .
4
Start push- funksjonen. Dette tar en inngang , elementet å presse på køen , og utganger ingenting . I Java , hvis datatype er heltall , vil koden se slik ut : en
public void trykk ( int i )
Din kode vil ligne på de fleste andre programmeringsspråk , inkludert C og C + + . " Void " betyr at denne funksjonen vil produksjonen ingenting .
5
Lag en matrise av samme størrelse som matrisen du bruker for køen. Hvis din nåværende matrise kan holde 10 heltall , vil du lage en matrise som dette : en
int [ ] secondArray = new int [ 10 ];
andre rekke vil senere bli din køen. Hvis den siste oppføringen i arrayet er full, betyr dette at du har brukt hver oppføring i rekken , bør du i stedet lage en matrise som er en entry større
6
Sammenlign innspill til hvert element . i arrayet , og starter med det første , ved hjelp av sorteringsfunksjonen . Alltid gjøre push- innspill det første elementet du plasserer i den slags funksjon . Å sammenligne presse innspill og det første elementet fra arr , vil koden se slik ut : en
sortere ( i , arr [ 0 ] ) ;
Her er " in" er navnet gitt til inngangsstorrelsen fra trinn 4
p Hvis dette returnerer -1 , satte trykk innspill i andre rekke : .
secondArray [ 0 ] = i ;
Ellers kopiere element fra den første matrisen i andre rekke : en
secondArray [ 0 ] = arr [ 0 ];
deretter sammenligne presse innspill til neste element i første rekke :
< p > sort ( i , arr [ 1 ] ) ;
Fortsett denne til presse innspill er satt inn i andre rekke , eller til det ikke er flere elementer i første rekke . I sistnevnte tilfelle , sted presse innspill som det neste elementet i andre rekke .
7
Kopier resten av elementene fra den første matrisen i andre rekke . Nå som push- inngang er plassert i andre rekke , har du ikke behov for den slags funksjon . Fra nå av bruker andre rekke snarere enn den første , den første matrise er nå utdatert . Med dette er push -funksjonen fullført.
8
Skriv pop funksjon . Dette tar ingen innganger , men det utganger ett element fra køen. Hvis dataene typen er heltall , vil koden se slik ut : en
public int pop ( )
andre ord , " int ", betyr at denne funksjonen vil sende et heltall
9
Lag en andre rekke samme størrelse som din nåværende array. Deretter kopierer det andre elementet fra den første matrisen i den første oppføringen i andre rekke , det tredje elementet i andre rekke nest oppføring, og så videre og så videre , helt til det ikke er flere oppføringer . Ikke kopier det første elementet i første rekke . Hvis matrise inneholder fire elementer , vil koden se slik ut : en
secondArray [ 0 ] = arr [ 1 ];
secondArray [ 1 ] = arr [ 2 ];
< p> secondArray [ 2 ] = arr [ 3 ];
Recall at den første indeks av en matrise er 0 . Dette betyr at secondArray [ 0 ] er det første elementet av secondArray , og arr [ 1] er det andre elementet av arr.
10
tilbake det første elementet fra første rekke . Koden vil se slik ut : en
retur arr [ 0 ];
p Som med push -funksjonen , er den andre rekke nå din køen. Den pop -funksjonen er nå fullført.