Hi,
mein problem ist folgendes: Wie ihr sehen könnt habe ich eine einfuegen und loeschen prozedur. ich kann damit aber nicht die ersten 2 einträge meiner liste löschen...
wenn ich mir also eine liste - 1,2,3,4,5 - ausgeben lasse kann ich nichts mehr hinter 4 und 5 einfuegen bzw. 4 und 5 loeschen
Helft mir bitte. Die Suche hat mir leider nicht weiter geholfen, hab zwar son tolles tut gefunden, was mich dann auf die idee mit der weitergabe von "Vorheriger" gebracht hat, aber nicht das problem mit den zugriffen löst
Greetz, Chuckyy
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102:
| type Zeiger = ^Element; Element = record Naechster: Zeiger; Inhalt: integer; end; var Form1: TForm1; Wurzel, z: Zeiger;
implementation
{$R *.DFM}
procedure loeschen(var Listenzeiger: Zeiger; Nach: integer);
procedure loeschen2(var Listenzeiger, Vorheriger: Zeiger; Nach: integer); begin if Listenzeiger <> NIL then if Listenzeiger^.Inhalt = Nach then begin Vorheriger^.naechster := Listenzeiger^.naechster; end else loeschen2(Listenzeiger^.naechster,Listenzeiger,Nach); end;
begin if Listenzeiger <> NIL then loeschen2(Listenzeiger^.naechster,Listenzeiger,Nach); end;
procedure einfuegen(var Listenzeiger, Vorheriger: Zeiger; Wert,Nach: integer); var Listenzeiger_add: Zeiger; begin if Listenzeiger <> NIL then if Listenzeiger^.Inhalt = Nach then begin new(Listenzeiger_add); Listenzeiger_add^.Inhalt := Wert; Vorheriger^.Naechster := Listenzeiger_add; Listenzeiger_add^.naechster := Listenzeiger; end else einfuegen(Listenzeiger^.naechster,Listenzeiger,Wert,Nach); end;
procedure ausgeben(var Listenzeiger: Zeiger); begin form1.lib_ausgabe.clear; if Listenzeiger <> NIL then begin form1.lib_ausgabe.items.add(inttostr(Listenzeiger^.Inhalt)); ausgeben(Listenzeiger^.naechster); end; end;
procedure anfuegen(var Listenzeiger: Zeiger); begin Wurzel := z; new (Listenzeiger); Listenzeiger^.Inhalt := StrToInt(form1.edt_eingabe.text); Listenzeiger^.naechster := Wurzel; end;
procedure TForm1.FormCreate(Sender: TObject); begin Wurzel := nil; z := Wurzel; end;
procedure TForm1.btn_anfuegenClick(Sender: TObject); begin anfuegen(z); end;
procedure TForm1.btn_ausgebenClick(Sender: TObject); begin ausgeben(z); end;
procedure TForm1.btn_einfuegenClick(Sender: TObject); var Wert, Nach: integer; begin Wert := strtoint(edt_eingabe.text); Nach := strtoint(edt_listenzeiger.text); einfuegen(Wurzel,Wurzel,Wert,Nach); end;
procedure TForm1.btn_loeschenClick(Sender: TObject); var Nach: integer; begin Nach := strtoint(edt_listenzeiger.text); loeschen(Wurzel,Nach); end;
end. |