Dieses Wiki, das alte(!) Projektwiki (projektwiki.zum.de)
wird demnächst gelöscht.
Bitte sichere Deine Inhalte zeitnah,
wenn Du sie weiter verwenden möchtest.
Gerne kannst Du natürlich weiterarbeiten
im neuen Projektwiki (projekte.zum.de).Datenstruktur Warteschlange implementiert mit einer rekursiven Beziehung: Unterschied zwischen den Versionen
Aus Projektwiki - ein Wiki mit Schülern für Schüler.
Zeile 1: | Zeile 1: | ||
− | + | Dieser Artikel behandelt die Lösungsidee der Wartschlange-Aufgabe mit einer rekursiven Beziehung. | |
== Problem mit der alten Version (Feld)== | == Problem mit der alten Version (Feld)== | ||
Zeile 5: | Zeile 5: | ||
== Neuer Lösungsansatz == | == Neuer Lösungsansatz == | ||
− | Die Wartschlange kennt den ersten Patient, und dieser (falls vorhanden) seinen Nachfolger. <br /> | + | Die Wartschlange "kennt" (-> hat eine Referenz auf) den ersten Patient, und dieser "kennt" (falls vorhanden) seinen Nachfolger. <br /> |
Dadurch entsteht in PATIENT eine '''rekursive Beziehung'''. <br /> | Dadurch entsteht in PATIENT eine '''rekursive Beziehung'''. <br /> | ||
Version vom 22. Oktober 2013, 20:10 Uhr
Dieser Artikel behandelt die Lösungsidee der Wartschlange-Aufgabe mit einer rekursiven Beziehung.
Inhaltsverzeichnis |
Problem mit der alten Version (Feld)
Die Warteschlange als Feld hat das Problem, dass eine bestimmte Länge festgelegt werden muss.
Neuer Lösungsansatz
Die Wartschlange "kennt" (-> hat eine Referenz auf) den ersten Patient, und dieser "kennt" (falls vorhanden) seinen Nachfolger.
Dadurch entsteht in PATIENT eine rekursive Beziehung.
Quelltext
Im Quelltext ist besonders die Einfügen-Methode interessant:
In Klasse WARTSCHLANGE
void PatientEinfuegen(PATIENT PatientNeu) { if (Erster == null) { Erster = PatientNeu; } else { Erster.PatientEinfuegen(PatientNeu); } }
In KLasse PATIENT
void PatientEinfuegen(PATIENT PatientNeu) { if (nachfolger == null) { nachfolger = PatientNeu; } else { nachfolger.PatientEinfuegen(PatientNeu); } }