...ok
Ich hab noch eine letzte Frage. Ich habe eine Kette von Zahlen erstellt. Die sieht so aus:
das sind globale deklarationen:
Delphi-Quellcode:
type
Zeiger=^Element;
Element= record
rechts: Zeiger;
inhalt: integer;
end;
var
Form1: TForm1;
a: integer;
wurzel,lauf,help: zeiger;
Nun kommt das Program an sich:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
a:=1;
wurzel:=NIL;
end;
procedure TForm1.Button1Click(Sender: TObject);
var b: integer;
begin
b:=strtoint(edit1.text);
if a=1
then
begin
new(lauf);
lauf^.rechts:=NIL;
lauf^.inhalt:=b;
wurzel:=lauf;
a:=2;
end
else
begin
while lauf^.rechts<>NIL do
lauf:=lauf^.rechts;
new(lauf^.rechts);
lauf:=lauf^.rechts;
lauf^.inhalt:=b;
lauf^.rechts:=NIL;
end;
edit1.text:='';
end;
Und die Ausgabe in ein label:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
lauf:=wurzel;
label1.Caption:=inttostr(lauf^.inhalt) + ',';
while lauf^.rechts<>NIL do
begin
lauf:=lauf^.rechts;
label1.Caption:=label1.caption + inttostr(lauf^.inhalt) + ',';
end;
end;
Für das sortieren habe ich folgenden Ansatz:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
lauf:=wurzel;
help:=lauf^.rechts;
while lauf.rechts.rechts<>NIL do
if lauf^.rechts^.inhalt<help^.rechts^.inhalt
then
begin
lauf^.rechts:=help^.rechts;
lauf^.rechts^.rechts^.rechts:=help;
lauf^.rechts^.rechts:=lauf^.rechts^.rechts^.rechts;
lauf^.rechts^.rechts^.rechts:=help^.rechts^.rechts;
end
else
begin
lauf:=help;
help:=lauf^.rechts;
end;
label2.Caption:=label1.caption + inttostr(lauf^.inhalt) + ',';
end;
Achso ja. Und meine Frage ist, wie ich diese Pointerkette sortiert bekomme. Wohlgemerkt ohne die gespeicherten Elemente zu ändern sondern nur durch "Verbiegen" der Pointer..?