![]() |
Eine verkettete Liste
Hallo Leute,
ich habe ein kleines Problem mit der Aufgabe meines Lehrers. Er möchte, dass wir (Informatikkurs) eine einfache verkettete Liste erstellen. Gesagt, getan. So jetzt kommt er heute an und sagt ich habe es falsch, da ich mit Records gearbeitet habe oO. Ich poste mal mein Quellcode:
Delphi-Quellcode:
Ich verstehe nicht was daran falsch sein sollte, naja egal. Er sagt ich soll es objektorientiert machen. Er will das ich 3 Units benutze (Ausgabe[Form], TEListe[wo head, tail & aktuell stehen soll] und TListenElement[siehe oben, von den Variablen gleich])
Interface
type PListe = ^TListenElement; TListenElement = Record Daten: String; Naechstes: PListe; end; ... TForm1 = class(TForm) ... private head: PListe; aktuell: PListe; tail: PListe; ... implementation procedure TForm1.Einlesen(Sender: TObject); var p1,p2: PListe; begin New(p1); p1^.Daten := Edit1.Text; p1^.Naechstes := NIL; if head = NIL then head := p1 else begin p2 := head; while(p2^.Naechstes <> NIL) do p2:= p2^.Naechstes; p2^.Naechstes := p1; end; aktuell := p1; ... end; ... So dazu habe ich eine Frage:
Delphi-Quellcode:
Laut meinem Lehrer ist new(p1) und p1 := TElement.Create das selbe und p1 erhält die Speicheradresse, aber das tut Delphi überhaupt nicht!!
type
TElist = class private head: TLElement; tail: TLElement; akt : TLElement; count: Cardinal; public procedure add(Daten: Integer); end; implementation procedure TElist.add(Daten: Integer); var p1, p2: TLElement; begin p1 := TLElement.Create; p1.setData(Daten); p1.setRechts(NIL); if head = NIL then head := p1 else begin p2 := head; end; ... end; Muss man nicht mit Zeiger arbeiten? Also ^ ? Er sagt nein... Könnt ihr mir helfen, wie erhält p1 die Adresse? Boah, wieso muss man es kompliziert machen, wenn es auch einfach geht... Danke |
Re: Eine verkettete Liste
Objektinstanzen sind automatisch Referenzen, Du musst also keinen extra Zeiger deklarieren oder zuweisen.
|
Re: Eine verkettete Liste
Boah... schon lange her die Zeiger :P
Vll. hilft dir das hier weiter: ![]() mfg Flö |
Re: Eine verkettete Liste
Oder hier mal schauen:
![]() Aber da werden wohl auch Records verwendet, das soll ja nicht. |
Re: Eine verkettete Liste
Zitat:
|
Re: Eine verkettete Liste
Wie sieht TElement denn aus? Das muss schon eine Klasse sein.
|
Re: Eine verkettete Liste
Ähhh, wie soll das denn ohne Record funktionieren?
Ein Feld für den Inhalt, ein Feld für den Zeiger zum nächsten Listenelement - das ist doch dann immer ein Record. Bei einer doppelt verketteten List käme noch ein Zeiger zum Vorgänger hinzu. |
Re: Eine verkettete Liste
wegen dem .Create.....
mfg Flö |
Re: Eine verkettete Liste
Zitat:
Delphi-Quellcode:
type
TLElement = class private rechts: TLElement; Data : Integer; public procedure setData(Daten: Integer); procedure setRechts(next: TLElement); function GetRechts:TLElement; end; |
Re: Eine verkettete Liste
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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