Sie sind auf Seite 1von 2

Warteschlangen:

Warteschlange: Reihe gleichartiger Objekte, die die Schlange in der gleichen Reihenfolge verlassen, in der sie hinzugefgt worden sind. Die Datenstruktur gibt an, wie die Objekte zueinander angeordnet sind und welche Operationen fr den Zugriff auf diese zur Verfgung stehen. FIFO-Prinzip: First In, First Out, d.h. das Objekt, welches sich als erste "anstellt", wird auch als erstes bedient (Bsp Menschen an einer Kasse). Die Klasse Warteschlange braucht mindestens 2 Methoden, zum Einfgen eines Objektes am Ende der Schlange und zum Entnehmen eines Objektes am Anfang. Warteschlangen, die nur eine bestimmte Anzahl von Objekten aufnehmen knnen, werden mit Hilfe eines Feldes implimentiert. S.11 Methoden "hintenAnstellen" und "vorneAbfahren". hintenAnstellen: Zuerst prfen, ob noch Platz frei ist, dann die Anzahl der Taxis um 1 erhhen. vorneAbfahren: dem ersten Taxi wird der Rckgabewert 0 zugewiesen. Danach rcken alle danachfolgenenden Taxis eins vor (i-1), bis das letzte Taxi erreicht wird. Bei Warteschlangen, die als Felder implementiert sind, kann man auf die einzelnen Felder(Taxis) einzeln zugreifen, z.B Taxistand(2) gibt das dritte Taxi zurck, da man mit der Null anfngt. Die Datenstruktur kombiniert Objekte bestimmter Datentypen nach gewissen Ordnungsprinzipien. Die Warteschlange ist eine zusammengesetzte Datenstruktur, bei der das FIFO Prinzip gilt.

Einfach verkettete Listen:


Eine Warteschlange, die mit einem Feld implementiert wurde hat mehrere Nachteile: - Ihre Lnge ist begrenzt. - Freie Felder verbrauchen unntig Speicherplatz. - Der Aufwand beim Entfernen ist sehr gro, da die nachfolgenden Elemente aufrcken mssen. Deswegen benutzt man einfach verkettete Listen. Diese Liste entsteht, wenn man Objekte zu einer Reihe verbindet. Die Lnge der Liste ist unbeschrnkt. Listen verwendet man dann, wenn man die Anzahl der Objekte nicht genau wei, oder diese sehr gro ist oder variiert. Objektstruktur: Die Listenelemente nennt man Knoten. Die Knoten lassen sich mit

Krben vergleichen, jeder Korb hat einen Hacken, an dem ein weiterer Korb hngt. Der hacken des untersten Korbes ist frei. Die Klassendefinition ist rekursiv, da jedes Objekt der Klasse Knoten (bis auf den letzten) auf ein Objekt der gleichen Klasse verweist. Die Objekte der Klasse Knoten speichern die Referenz auf den nchsten Knoten in einem bestimmten Attribut. Dieses ist beim letzten Knoten Null. Jeder Knoten hat auch einen Inhalt. Somit haben die Knoten 2 Attribute: nchster und enthlt. (S.17). Bei den in den Knoten enthaltenen Elementen muss man sich innerhalb einer Liste auf einen bestimmten Datentyp beschrnken muss, z.B. char fr eine Liste mit Zahlen oder Zeichen. Mit der Methode naechsterSetzen kann man einen neuen Knoten anhngen(S.17 unten). Zuerst werden die Elemente erzeugt, dann werden die Knoten mit dem Inhalt erzeugt und dann die verkettete Liste aufgebaut. Um auf die Elemente einer verketteten Liste zugreifen zu knnen, reicht es aus, den ersten Knoten zu referenzieren, da dieser mit den nchsten verknpft ist. S.18 Methode um den ersten Knoten auszugeben. Bei verketteten Listen kann man nicht sofort auf einen Knoten irgendwo in der Liste zugreifen, da nur der erste Knoten referenziert ist. Man folgt den Referenzen vom ersten Knoten aus, welcher auf den zweiten verweist, dieser wiederum auf den dritten Knoten verweist usw., bis man beim gewnschten Knoten angekommen ist. (S.19 Methode, um einen bestimmten Knoten auszugeben). Einfach verkettete Listen bilden eine rekursive Klassenstrunktur, da jedes Objekt der Knoten mit ein Objekt der gleichen Klasse in Beziehung stehen kann. Auf einen bestimmte Knoten greift man mit Hilfe einer Iteration ber die Knoten ausgehend vom ersten Knoten aus.