Nachdem ich mein Programm fertig habe, gab es eine neue Aufgabe:
Nun soll der Record Vorgänger, Wert und Nachfolger enthalten.
Ich füge mal ein jpg ein, dass ich bekommen habe zur Hilfe.
Nun wollte ich erstmal anfangen das eingeben zu Programmieren.
Also die erste Eingabe ist der start record und zeigt auf den 2, der auf den 3 usw.
Also ich hab mir das so gedacht, stimmt das? :
Delphi-Quellcode:
Type
PEintrag = ^TEintrag;
TEintrag = Record
Vorgaenger: PEintrag;
Wert: integer;
Nachfolger: PEintrag;
End;
Type
TListe = Array Of PEintrag;
PListe = ^TListe;
Type
TForm1 = Class(TForm)
LBOutNumber: TListBox;
EdGetNumber: TEdit;
BtBeenden: TButton;
BtSort: TButton;
BtHinzufuegen: TButton;
Procedure FormCreate(Sender: TObject);
Procedure FormDestroy(Sender: TObject);
private
Liste: PListe;
Eintrag: PEintrag;
Procedure Input;
...
End;
..
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Liste := Nil;
New(Liste);
End;
Procedure TForm1.FormDestroy(Sender: TObject);
Var
i: integer;
Begin
For i := Low(Liste^) To High(Liste^) Do
Dispose(Liste^[i]);
Dispose(Liste);
End;
Procedure TForm1.Input;
Var
x, i: integer;
Begin
// Init mit nichts
Eintrag := Nil;
new(Eintrag);
//neuen Eintrag in Array eintragen
Eintrag^.Wert := StrToInt(EdGetNumber.Text);
//Array um 1 erweitern
SetLength(Liste^, Length(Liste^) + 1);
//Zahl ans Ende des Arrays eintragen
x := high(Liste^);
Liste^[x] := Eintrag;
//Erste Eintrag hat den Vorgänger Nil
Liste^[low(Liste^)].Vorgaenger := Nil;
Liste^[low(Liste^)].Nachfolger := Liste^[(low(Liste^)+1)];
//Vorgänger und Nachfolger der Einträge festlegen
For i := (low(Liste^) + 1) To (high(Liste^) - 1) Do Begin
Liste^[i].Vorgaenger := Liste^[i - 1];
Liste^[i].Nachfolger := Liste^[i + 1];
End;
//Letzte Eintrag hat den NAchfolger Nil
Liste^[high(Liste^)].Vorgaenger := Liste^[(high(Liste^)-1)];
Liste^[high(Liste^)].Nachfolger := Nil;
End;