![]() |
Re: Einfach Verkettete Liste
Nimm doch einfach meine Prozeduren...
|
Re: Einfach Verkettete Liste
Da bekomme ich aber die selben Fehler!
|
Re: Einfach Verkettete Liste
Bei diesem Verfahren wird das neue Element an erster Stelle geschrieben und alle anderen einen nach unten gesetzt!
Delphi-Quellcode:
Wie kann man das ganze jetzt so umdrehen das, das neue Element an das Ende geschrieben wird?
Procedure AddToList (aNodeInfo : TInfo);
Var p : PLinkedList; Begin New (P); p^.llData := aNodeInfo; p^.llNext := HEAD^.llNext; Head^.llNext := p End; |
Re: Einfach Verkettete Liste
Hallo,
schreib dir eine Methode, die den letzten Eintrag sucht (das ist der mit Next=NIL), erzeuge einen neuen Koten, setze dort Next auf NIL und setzen Next des (gerade gefundenen) Knoten auf deinen neu erzeugten. Heiko |
Re: Einfach Verkettete Liste
Was ist eigentlich der Unterschied zwischen
p^.llData := aNodeInfo; p^.llNext := HEAD^.llNext; Head^.llNext := p und p.llData := aNodeInfo; p.llNext := HEAD.llNext; Head.llNext := p Also meine Frage ist wofür ist dieses "^" Zeichen nötig??? |
Re: Einfach Verkettete Liste
Das ^-Zeichen hinter einer Zeigervariablen steht für Dereferenzierung, d.h. es ist nicht der Zeiger an sich gemeint, sondern die dahinter liegenden Daten.
|
Re: Einfach Verkettete Liste
Aber unbedingt hischreiben muss man es nicht??
Ist also eher ein Zeichen zur verdeutlichung, oder??? |
Re: Einfach Verkettete Liste
Zitat:
|
Re: Einfach Verkettete Liste
Hi.
Das ^ Zeichen dereferenziert einen Zeiger: Wenn P ein Zeiger auf einen Record 'TMyRecord' ist (also P ist nur eine Adresse), dann bezeichnet 'P^' das, worauf P zeigt, in diesem Fall den Record 'TMyRecord'. Also würde eigentlich 'P.bla' keinen Sinn ergeben. Nun ist der Delphi-Compiler ja nett zu uns und verzeiht einige Tippfehler, weswegen er das '^' nach dem P dazudichtet. |
Re: Einfach Verkettete Liste
Ich habe schon wieder ein derbes Problem!!
Ich möchte eine Liste füllen! Als erstes wird die Funktion ListFüllen aufgerufen, in der dann ein neues Element gefüllt wird durch den Aufruf der Function NewOneListElement. In der While Schleife suche ich die Dateinamen die in First(noch eine Liste) gespeichert sind heraus und schneide die Dateierweiterung(.txt) ab. Die einzelnen Dateinamen ohne Extension werden dann in einem String gespeichert, den ich nachher als Titel benutze. Mein Problem liegt aber darin das an der Stelle {Ausgabe.Id := PPointers;} in der Function NewOneListElement einfach in der List ein Wert verändert wird obwohl ich an der Stelle garnix mit der List mache! Ich kann mir das nicht erklären!!!!
Delphi-Quellcode:
function ListFüllen :POnelist;
var temp : PDatensatz; Name : String; Ausgabe : POnelist; Begin Name := ''; temp := first; //Neues Element anlegen und Füllen Ausgabe := NewOneListElement; while temp <> Nil do Begin Name := Name + ExtractFileName(temp.info.Titel); Name := StringReplace(Name, '.txt','',[]); temp := temp.next; end; Ausgabe.Titel := Name; //Ausgabe an das ende der Liste anfügen Ausgabe.next := List; List := Ausgabe; ListFüllen := List; end;
Delphi-Quellcode:
function NewOneListElement; :POnelist;
var Ausgabe : POnelist; Begin new(Ausgabe); Ausgabe^.next := Nil; Ausgabe^.daten := first; inc(PPointers); Ausgabe.Id := PPointers; //genau an dieser Stelle tritt der Fehler auf!!// NewPlayElement := Ausgabe; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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