Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Schnellste und einfachste Methode für verkettete Liste

  Alt 13. Mär 2008, 18:07
Wenn du so einen Baum speichern willst, solltest du so eine Art Inhaltsverzeichnis anlegen

Also: Jeder Knoten hat einen Namen, Daten und X Kindknoten.

Also machst du sowas:

Code:
"Knoten1"$Adresse,2;"UnterknotenVon1Nr1"$Adresse,1;"UnterknotenVon11"$Adresse,0;"Unterknoten2"$Adresse,0;"Knoten2"$adresse,0
Bei diesem Format speicherst du also den Namen, die Adresse (in der Datei) und die Anzahl der Kinder. Anhand dieser Daten kannst du das ganze wieder zusammenfriemeln.

Oder du machst die Datei direkt Rekursiv, so wie das hier. Das ist ein Ausschnitt aus einer Terminverwaltung, die ich mal in Java geschrieben habe. Das ist kein Programmcode, sondern die gespeicherte "Datenbank". Das ganze wurde dann von einer Klasse eingelesen und rekursiv wieder in eine Baumstruktur umgewandelt
Code:
new TYearly{
   Title="My Birthday";
   Priority=30;
   DaysInAdvance=1;
   Description="My Birthday ...";
   StartDate=new TDate{
      Year=2007;
      Month=3;
      Day=16;
      Time=null;
   };

   EndDate=new TDate{
      Year=2026;
      Month=3;
      Day=16;
      Time=null;
   };

   Day=12;
   Month=3;
};

new TAppointment{
   Title="Meeting with Dr. Suthers";
   Priority=15;
   DaysInAdvance=4;
   Description="This is a sample appointment.";
   Date=new TDate{
      Year=2007;
      Month=3;
      Day=24;
      Time=null;
   };

};

new TAppointment{
   Title="English Essay ";";;"";
   Priority=12;
   DaysInAdvance=7;
   Description="This is the english essay about "The Outsider"";
   Date=new TDate{
      Year=2007;
      Month=3;
      Day=16;
      Time=null;
   };

};

new TWeekly{
   Title="Guitar lesson";
   Priority=10;
   DaysInAdvance=3;
   Description="This is my Weekly guitar lesson, every Friday at 10:15";
   StartDate=new TDate{
      Year=2007;
      Month=1;
      Day=1;
      Time=null;
   };

   EndDate=new TDate{
      Year=2007;
      Month=5;
      Day=23;
      Time=null;
   };

   DayOfWeek=4;
   Time=new TTime{
      Hour=16;
      Minute=15;
   };

};

new TWeekly{
   Title="Sport Session";
   Priority=8;
   DaysInAdvance=3;
   Description="";
   StartDate=new TDate{
      Year=2007;
      Month=1;
      Day=2;
      Time=null;
   };

   EndDate=new TDate{
      Year=2007;
      Month=4;
      Day=20;
      Time=null;
   };

   DayOfWeek=1;
   Time=null;
};

new TWeekly{
   Title="Sport Session";
   Priority=8;
   DaysInAdvance=5;
   Description="";
   StartDate=new TDate{
      Year=2007;
      Month=1;
      Day=4;
      Time=null;
   };

   EndDate=new TDate{
      Year=2007;
      Month=4;
      Day=20;
      Time=null;
   };

   DayOfWeek=5;
   Time=null;
};

new TAppointment{
   Title="Economics past paper";
   Priority=7;
   DaysInAdvance=8;
   Description="This is a back\nentry.";
   Date=new TDate{
      Year=2007;
      Month=3;
      Day=25;
      Time=null;
   };

}
P.S. da wo Time=null steht, hätte man natürlich noch ein Time-Objekt einfügen können - theoretisch ist die Rekursionstiefe nicht begrenzt ^^
  Mit Zitat antworten Zitat