![]() |
Re: Die verkettete Liste
Delphi-Quellcode:
Grüße
procedure TParameterlist.AddAtEnd(Name, DataType: string);
var param: TParameter; NewItem: PItem; begin param := TParameter.Create(Name,DataType); //If list is still empty if (FFirst = nil) then begin New(NewItem); NewItem.Data := param; FFirst := NewItem; FCurrently := FFirst; end //list just has content else begin SetPointerAtPosition(High); New(NewItem); NewItem.Data := param; NewItem.Next := nil; FCurrently.Next := NewItem; // Punkt (1) end; inc(FCount); end; procedure TParameterlist.SetPointerAtPosition(index: integer); var i: integer; begin if (index <= High) then begin FCurrently := FFirst; // was passiert hier wenn FFirst = nil ist i := 0; while (i < index) do begin FCurrently := FCurrently.Next; // Punkt(2), weil hier FFirst in s Nirvana zeigt inc(i); end; end; end; procedure TParameterlist.Clear; var ptemp1,ptemp2: PItem; begin if (FCount > 0) then begin ptemp1 := FFirst; while (ptemp1 <> nil) do begin ptemp2 := ptemp1.Next; Dispose(ptemp1); ptemp1 := ptemp2; end; FFirst:=nil; // damit machst Du deutlich, das die Liste leer ist FCurrently:=nil; // Du setzt FCurrently nicht auf nil und verursachst dann bei Punkt (1)und (2) eine AV FCount := 0; end; end; Klaus |
Re: Die verkettete Liste
Aus Wikipedia:
Das Quadratische Rad neu erfinden: Eine schlechte Lösung bereitstellen wenn eine gute bereits existiert. Wenn du die Klasse für die Schule/Studium brauchst: na gut, dann mach halt weiter. Wenn's aber etwas sinnvolles werden soll, würde ich den ganzen Code wegwerfen und auf bewährtes zurückgreifen. z.B.: ![]() Man braucht auch nicht zwingend eine verkettete Liste zu verwenden, sondern kommt mit TList, TObjectList und Verwandten schon recht weit. |
Re: Die verkettete Liste
Ja es funktioniert.
Zitat:
Außerdem lernt man ja nebenbei gleich, wenn man nicht bestehendes benutzt. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 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