AuK/Prioritätswarteschlangen WS13-14

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

'''Autoren:''' [mailto:s3makrza@stud.hszg.de Maciej Krzan], [mailto:s3@stud.hszg.de Oliver Krüger]

















= Prioritätswarteschlangen =

==Prioritätswarteschlange - Definition und Beispiel==
:Eine Prioritätswarteschlange (auch: Vorrangwarteschlange, Prioritätenliste, Prioritätsschlange) ist eine specielle Art der abstrakte Datenstruktur. Das ist die Erweiterung der Warteschlange. Die Werte bekommen einmalige Schlüssel '''(jede Schlüssel hat nur ein Wert!)''' und sie sind in Reihenfolge mit der bestimmte Ordnung. Am meisten der Prioritätswarteschlangen können wir mit Assoziatives Datenfeld oder Heaps realizieren.

Wir können ganz einfach sagen, dass: '''Prioritätswarteschlange ist die abstrakte Datenstruktur, die die Elemente von Menge S deponieren. Diese Elemente haben bestimmte Werte, welche wir können "Schlüssel" heißen und sie sind bis andere Werte in eine Ordnung zusammenpassen.
:

===Beispiel===
Person in Pseudocode
 Map(String, String) person
  person.insert("Name", "Jens")
  person.insert("Vorname", "Jensen")
  person.insert("Stadt", "Jensfurt")



<language>Processing</language>
==Assoziatives Datenfeld==
Das assoziative Datenfeld (englisch „map“, „dictionary“ oder „associative array“) ist eine Art der abstrakte Datenstruktur.
Diese Struktur deponiert die Paare Daten(Schlüssel, Wert), die der Wert und der einmalig Schlüssel haben. Mithilfe bestimmte Schlüssel haben wir der Zutritt bis genau ein Wert.

API den vielen Programmiersprachen nutzen von Assoziatives Datenfeld, z.B.: Java, C++, C#, PHP, Python, Ruby, LISP, D, JavaScript.

===Beispiel in C++===
<code id="52ac572aa5f0c">
#include <map>
using namespace std;
map<string, int> anzahl_tage; // Schlüssel sind string und Werte int
 
anzahl_tage["Januar"] = 31; // Paar - Schlüssel(Monat) und Wert(Anzhal Tage)
anzahl_tage["Februar"]    = 28;
anzahl_tage["März"]  = 31;
anzahl_tage["April"]    = 30;
anzahl_tage["Mai"]    = 31;
anzahl_tage["Juni"]    = 30;
anzahl_tage["Juli"]    = 31;
anzahl_tage["August"]    = 31;
anzahl_tage["September"]    = 30;
anzahl_tage["Oktober"]    = 31;
anzahl_tage["November"]    = 30;
anzahl_tage["Dezember"]    = 31;
 
if (schaltjahr)
   anzahl_tage["Februar"] = 29; // wechseln Wert mit Schlüssel "Februar"
 
//Suche dem Schlüssel mit Methode "find"
if (anzahl_tage.find("März") == anzahl_tage.end())
    cout << "Schlüssel 'März' gibt es nicht in diese Tafel.";
else
    cout << "Anzahl Tage in März = " << anzahl_tage["März"];
</code>