Thema: Delphi Einführung in Pointer

Einzelnen Beitrag anzeigen

El Cattivo

Registriert seit: 17. Apr 2004
Ort: Nieste bei Kassel
19 Beiträge
 
Delphi 5 Standard
 
#32

Re: Einführung in Pointer

  Alt 10. Apr 2005, 16:25
...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..?
  Mit Zitat antworten Zitat