![]() |
Frage zu linearer Liste
Hi!
Da ich für meine mündliche Matura (=Reifeprüfung) ein Spezialgebiet mit dem Thema "Lineare Listen und Binäre Bäume" schreiben muss und da bisher lediglich das Einfügen funktioniert, dachte ich ich schau mal ob mir hier wer helfen kann, da ich auch keine Turtorials gefunden habe die mir weiter geholfen haben. Ich habe bei jedem Button dazugeschrieben was dieser Button machen soll. Hier ist der Quelltext:
Delphi-Quellcode:
Also zurück zu meiner Frage: Weiß jemand warum die Buttons "vor Key hinzufügen", "nach Key hinzufügen" und "Key löschen" nicht funktionieren?
unit Programm;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type PListe = ^TListe; //Pointer deklariert TListe = record //Liste deklariert key: Integer; next: PListe; text: String; end; TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; ListBox1: TListBox; Button2: TButton; Button3: TButton; Edit2: TEdit; Button4: TButton; Button5: TButton; Button6: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Liste: PListe; q: PListe; i: integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); //Leere Liste begin liste := nil; i:= 0; end; procedure TForm1.Button1Click(Sender: TObject); //Button für Listenerstellung am Kopf begin new(q); i := i+1; q.text := edit1.Text; q.next := liste; q.key := i; liste := q; end; procedure TForm1.Button2Click(Sender: TObject); //Button für Listenausgabe begin while liste <> nil do begin Listbox1.Items.Add(inttostr(liste.key) + ': ' + liste.text); liste := liste.next; end; end; procedure TForm1.Button4Click(Sender: TObject); // Button für Listenerstellung am Ende var h:PListe; begin i := i+1; if liste = nil then begin new(liste); liste.text := edit1.Text; Liste.key := i; Liste.next := nil; end else begin h := liste; while h.next <> nil do begin h := h.next; end; new(q); h.next:= q; q.text := edit1.Text; q.key := i; q.next := nil; end; end; procedure TForm1.Button3Click(Sender: TObject); //vor Key hinzufügen var x: integer; begin x:= strtoint(edit2.Text); while liste <> nil do begin if liste.key <> x then begin liste :=liste.next; end else begin i := i+1; new(q); q := liste; liste.key := i; liste.text := edit1.Text; liste.next := q; end; end; end; procedure TForm1.Button5Click(Sender: TObject); //hinter Key hinzufügen var x: integer; begin x := strtoint(edit2.Text); while liste <> nil do begin if liste.key <> x then begin liste := liste.next; end else begin i := i+1; new(q); q.next := liste.next; liste.next := q; q.key := i; q.text := edit1.Text; end; end; end; procedure TForm1.Button6Click(Sender: TObject); //Key löschen var x: integer; h: Pliste; begin x := strtoint(edit2.Text); while liste <> nil do begin if liste.key <> x then begin liste := liste.next; end else begin h := liste.next; liste.next := h.next; liste.text := h.text; liste.key := h.key; end; end; end; end. (Ich habe deswegen den ganzen Quelltext kopiert damit ihr wisst wie ich bisher gearbeitet habe ;) ) Ich hoffe auf baldige Antwort. Mit freundlichen Grüßen Churchy |
Re: Frage zu linearer Liste
WAS funktioniert denn nicht? Fehlermeldung? Tut was, aber nicht so wie gewünscht? Passiert garnix?
Würde die Fehlersuche etwas eingrenzen :glaskugel: |
Re: Frage zu linearer Liste
Es passiert gar nichts. ;)
Keine Fehlermeldung kein gar nichts. Würd mich ja über ne Fehlermeldung freuen so könnt ich wenigstens explizit nach dem Fehler suchen, aber so habe ich keine Ahnung, da ich mir auch aufgezeichnet habe was passiert und irgendwie müsste es so funktionieren, aber das tut es nicht. : - / |
Re: Frage zu linearer Liste
Delphi-Quellcode:
du solltest bei deinen Schleifen nicht die "Start"-Variable nutzen, denn so änderst du diese und deine List verschwindet, da diese Variable danach auf nil steht
liste := liste.next;
Delphi-Quellcode:
templist := liste;
while templiste <> nil do begin templiste := templiste.next; end; |
Re: Frage zu linearer Liste
|
Re: Frage zu linearer Liste
Zitat:
Werd mal das versuchen was ihr beiden über mir gesagt habt. ;) |
Re: Frage zu linearer Liste
dann eben nicht... [Anhang gelöscht]
|
Re: Frage zu linearer Liste
@omata: es wäre schon nett, wenn du wenigstens kurz sagen könntest, was in deinem Anhang drin ist.
|
Re: Frage zu linearer Liste
Zitat:
|
Re: Frage zu linearer Liste
Ähm ja O.o
Also so weit hab ichs ja wies in diesem Tut steht eigtl. (ja schon oben) und was genau das templiste bringen soll versteh ich nicht :-/ Muss ich dabei sämtliche Liste in templiste umschreiben oder nur die in den Schleifen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz