Achtung:

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.
Wechseln zu: Navigation, Suche
Zeile 9: Zeile 9:
  
 
== Quelltext ==
 
== 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);
 +
        }
 +
    }

Version vom 22. Oktober 2013, 14:31 Uhr

Version 1 (TEST):

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 den ersten Patient, und dieser (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);
        }
    }