Więc teraz wiemy, co to jest podstawowa kolejka, ale co z kolejką priorytetową? W kolejce priorytetowej każdy element wchodzący do kolejki ma dwie wartości, wartość priorytetu i dane. Elementy, które mają tę samą wartość priorytetu, zostaną wykonane na podstawie FIFO (pierwszy w i pierwszym miejscu) ale elementy o wyższym priorytecie niż inne zostaną wykonane jako pierwsze, bez względu na to, kiedy zostały dodane do kolejki.
Jest to zaawansowany temat struktury danych, więc zakładamy, że znasz działanie JavaScript i podstawowymi funkcjami JavaScript. Aby wdrożyć kolejkę priorytetową w JavaScript, musimy najpierw wiedzieć, jak wdrożyć prostą kolejkę w JavaScript.
Wdrożenie kolejki w JavaScript
Koncepcje struktury danych, takie jak kolejki, stosy, stosy lub kolejki priorytetowe, są wdrażane przy użyciu tablic w JavaScript.
Zdefiniujmy funkcję, która zdefiniuje naszą strukturę:
funkcja kolejka ()Wiemy, że kolejki są zaimplementowane z tablicami, więc utworzymy tablicę o nazwie Kolekcje
Wewnątrz funkcji:
array = [];Teraz, aby wdrożyć strukturę danych kolejki, musimy wdrożyć następujące funkcje:
Wszystkie te funkcje są łatwo dodawane za pomocą następujących wierszy kodu:
functionqueue ()Teraz, że przygotowujemy naszą strukturę danych, musimy utworzyć obiekt zmapowany na tę strukturę, robimy to za pomocą linii:
var newqueue = nowa kolejka ();Teraz potrzebujemy niektórych elementów, które można umieścić w kolejce, robimy to za pomocą następujących linii:
newqueue.enqueue („a”);Aby spojrzeć na to, jak wygląda teraz nasza kolejka, możemy wywołać funkcję drukowania tak:
newqueue.wydrukować();Otrzymujemy następujące dane wyjściowe na naszej konsoli:
Aby przetestować, jeśli implementacja pierwszego i pierwszego wyjścia działa poprawnie, zamierzamy odużyć element z listy i wydrukować najważniejszą wartość, a następnie wydrukować całą pozostałą kolejkę z następującymi wierszami:
newqueue.dequeue ();Pełny fragment kodu struktury kolejki to:
functionqueue ()Po wykonaniu tego kodu możemy zaobserwować następujący wynik na konsoli:
Tak więc, kiedy nazywaliśmy funkcję dequeue, usunęła pierwszy element z listy. Następnie sprawdziliśmy najważniejszy element w kolejce, który był "B". Potem ponownie wydrukowaliśmy kolejkę i dało nam pozostałą kolejkę we właściwej kolejności. Oznacza to, że nasza implementacja kolejki działa idealnie:
Wdrożenie kolejki priorytetowej w JavaScript
Znamy różnicę między kolejką normalną a kolejką priorytetową, że elementy wewnątrz kolejki priorytetowej zawierają wartość priorytetu wraz z danymi. Oznacza to, że cała funkcjonalność kolejki priorytetowej jest taka sama jak normalna kolejka, z wyjątkiem Funkcja enqueue.
W kolejkach priorytetowych funkcja enqueue umieszcza element o wyższym priorytecie przed elementem niższym priorytetem. A jeśli dwa lub więcej elementów mają ten sam priorytet, nowo dodane elementy są umieszczane na późniejszym końcu kolejki, aby utrzymać metodę wyceny pierwszego i pierwszego wyjścia.
Mając to na uwadze, możemy napisać nową funkcję Enqueue dla kolejki priorytetowej z następującymi wierszami kodu:
Ten.enqueue = funkcja (newMem)Pierwszą rzeczą, którą robimy w funkcji Enqueue, jest to, że jeśli kolekcja jest pusta, po prostu popychamy element na kolejkę:
Jeśli to.jest pusty())Jeśli kolejka nie jest pusta:
Całość enqueue Funkcja będzie wyglądać tak:
Ten.enqueue = funkcja (newMem)Reszta funkcji kolejki priorytetowej jest prawie taka sama jak normalna kolejka, z niewielką zmianą funkcji dequeue, aby wyświetlać tylko nazwę, a nie wartość elementu. Cały fragment kodu kolejki priorytetowej jest:
funkcjaPriorityqueue ()Czas na umieszczenie elementów w kolejce przy użyciu następujących wierszy kodu:
var pq = nowy priorytetQueue ();Jak widać, pierwszym priorytetem jest „Microsoft” element o wartości 1. Musi być na początku kolejki, nawet jeśli został dodany na 3. miejscu.
Teraz, jeśli wywołamy funkcję dequeue, a następnie funkcję drukowania, pierwszy element należy usunąć z listy:
PQ.dequeue ();Proszę bardzo, nasza kolejka priorytetowa działa idealnie.
Wniosek
Kolejki to koncepcje struktury danych, które pracują nad metodą wyceny pierwszego i pierwszego miejsca. Podobnie kolejki priorytetowe działają na wycenę pierwszego i pierwszego wyjścia, ale z dodatkową wartością „priorytetu” element o najwyższym priorytecie zostanie wykonany jako pierwszy, bez względu na to, kiedy zostały dodane do kolejki. W tym poście nauczyliśmy się, jak wdrożyć prostą kolejkę w JavaScript i jak wykorzystać tę strukturę danych do wdrożenia działania kolejki priorytetowej.