Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Grundlagen der Programmierung: Datenstrukturen

Priority Queues

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Priority Queues können mit etwas zusätzlicher Logik bestimmte Elemente bevorzugt behandeln und verarbeiten. Eine weitere Besonderheit stellt das Deque dar, eine Mischung aus Stack und Queue.

Transkript

Manche Sprachen bieten eine Version der Queue an, die Priority-Queue genannt wird. Die erlaubt Ihnen, neue Elemente an die Queue anzufügen, die eine Vorrangstellung haben. Das kann etwas sehr einfaches wie eine Nummer sein, so dass neue Elemente vor bereits existierenden hinzugefügt werden können. Wenn nun unterschiedliche Elemente mit derselben Priorität hinzugefügt werden, werden sie ganz normal nach dem First in, first out-Prinzip gereiht. Wenn aber etwas mit höherer Priorität kommt, wird es auch als erstes verarbeitet. Und sollte etwas mit einer niedrigeren Priorität kommen, dann wird es ganz normal hinten angereiht und in der normalen Queue-Art verarbeitet. Nachdem Sie die Prioritäten festlegen, müssen Sie typischerweise auch einen Komparator zum Vergleichen beziehungsweise eine Vergleichsfunktion bereitstellen, so wie Sie wahrscheinlich auch bei sortierten Arrays tun, damit Sie Ihre kleine Logik einsetzen und berücksichtigen können. Diese Priority-Queues haben eine nicht ganz so umfassende Sprachunterstützung wie normale Queues. Java hat eine bevorzugte Queue-Klasse. C++ hat einen bevorzugten Queue-Container. Beide verlangen von Ihnen eigene Komparative, um damit arbeiten zu können. Die Priority-Queue als abstrakten Datentyp einzusetzen kann auf vielerlei Arten umgesetzt werden. In Objective C können Sie zum Beispiel ein Priority-Queue-Verhalten einsetzen, indem Sie eine eingebaute Datenstruktur, einen sogenannten binären Heap, verwenden. Aber da greifen wir etwas vor. Genau so wie Priority-Queues gibt es auch sogenannte Deques. D-E-Q-U-E. Das steht für Double-ended Queues. Ein Deque ist grundsätzlich wie ein Stack aufgebaut. Eigentlich ist es ein Stack und eine Queue gleichzeitig. Sie können nämlich etwas einfügen und Sie können's von jeder beliebigen Seite wieder entfernen. Und auch von jeder beliebigen Seite wieder hinzufügen. Aber Achtung! Es gibt da die Möglichkeit, dass Sie sich verwirren lassen. Deque klingt leider sehr ähnlich wie dequeue und enqueue. Dequeue und enqueue sind Methoden, sie sind also Verben. Während das Deque ein Hauptwort ist. Das Deque ist also eine spezielle Form der Queue. Eine zweiseitige Queue sozusagen. Die Sprachunterstützung hierfür ist noch ein bisschen eingeschränkter als bei der Priority-Queue. Java hat ein Queue-Interface und ebenso auch ein Deque-Interface. Die Unterstützung läuft über die LinkedLists. Bitte beachten Sie, dass sich die LinkedLists in Java immer mehr zu einer sehr, sehr flexiblen Klasse entwickeln. Es kann sich wie eine verlinkte Liste verhalten und wie eine Queue. Es kann sich wie eine doppelendige Queue verhalten. In C++ gibt's einen Deque-Containertyp mit Methoden wie push_back, push_front, pop_back und pop_front. Damit können Sie wählen, ob Sie am Anfang oder Ende etwas einfügen wollen. Python hat ebenfalls eine Deque-Klasse. Auch wenn Sie eine Python-Liste verwenden könnten. Das Deque ist für genau diese spezielle Verwendung optimiert worden. Ruby hat keine explizit eingebaute Deque und bei .NET ist es genauso. Und obwohl Sie vergleichbares Verhalten mit verlinkten Listen oder sogar mit dynamischen Arrays bereitstellen können, unterstützen viele die Idee des speziellen Hinzufügens von Elementen an erster oder letzter Stelle. Und das Entfernen von Elementen an beiden Seiten. Aber machen Sie sich bewusst, wie groß das alles werden kann, wenn permanent Elemente verschoben werden. Es ist nicht unbedingt eine besonders effiziente Arbeitsweise. Priority-Queues und Deques sind keine Dinge, mit denen Sie jeden Tag beim Programmieren zu tun haben werden. Aber es ist praktisch, über deren Verfügbarkeit zu wissen, sollten Sie jemals in die Situation kommen, vergleichbares zu brauchen.

Grundlagen der Programmierung: Datenstrukturen

Erhalten Sieeinen klaren Eindruck von Datenstrukturen und deren Eigenheiten und verstehen, wie Sie diese am besten einsetzen können – ganz unabhängig von den einzelnen Programmiersprachen.

2 Std. 51 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!