Habe mal einige Kommentare eingefügt.
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject); //hinter Key hinzufügen
var x: integer;
templiste, q: PListe;
begin
x := strtoint(edit2.Text);
templiste := liste;
// Was bezweckst Du hiermit?
while templiste <> nil do begin
// wenn temListe.key = x ist
// dann wird an der aktuellen Position
// ein Element eingefügt.
// Soll das so sein?
if templiste.key <> x then begin
i := i+1;
new(q);
// wenn das neue Element an das Ende der Liste
// angefügt wird, dann sollte q.next := nil
q.next := templiste.next;
templiste.next := q;
q.key := i;
q.text := edit1.Text;
end;
templiste := templiste.next;
end;
end;
Eine Endlosschleife würde darauf hindeutem, dass in der Liste das letzte Element nicht auf nil zeigt.
Habe mal noch etwa nachgedacht.
Willst Du ein neues Element (q) vor bzw. nach einem bestehenden Element einfügen?
Wenn dem so sein sollte, dann solltest Du mehrere Fälle unterscheiden.
a) Du willst vor dem ersten Element ein Element einfügen,
dann ändert sich die Adresse des ersten Elementes (Ancker)
Delphi-Quellcode:
new(q);
q.next:=liste;
Ancker := q;
q...
b)Du willst nach dem letzen Element ein Element anhängen.
Delphi-Quellcode:
new(q);
q.next := nil;
liste.next := q;
q...
b) Du willst innerhalb der Liste ein Element einfügen
Dazu brauchst Du dann noch einen Buffer für das
Element vor dem aktuellen Element.
Delphi-Quellcode:
new(q);
buf.next := q;
q.next := liste;
q...
Grüße
Klaus