AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe bei doppelter verkettete Liste

Ein Thema von Preddy2005 · begonnen am 2. Nov 2006 · letzter Beitrag vom 9. Nov 2006
 
Preddy2005

Registriert seit: 27. Nov 2005
Ort: Mettmann
38 Beiträge
 
#1

Hilfe bei doppelter verkettete Liste

  Alt 2. Nov 2006, 15:09
Hallo mal wieder!

Bräuchte mal ein wenig Hilfe...

Und zwar geht es um Erklärungen in Bezug auf eine doppelte verkettete Liste.
Delphi-Quellcode:

procedure TForm1.btnFirstClick(Sender: TObject);
begin
 New(pNeuer_Wert); // Neues Element erzeugen
 pNeuer_Wert^.Zahl := 1; // Zahl auf den Wert eins setzen
 PNeuer_Wert^.Next := nil; // Next - Zeiger zeigt auf kein Element
 PNeuer_Wert^.Prev := nil; // Prev - Zeiger zeigt auf kein Element
 pErster_Wert := pNeuer_Wert; // Erster Wert Zeiger zeigen auf NIL
 pVorheriger_Wert := pNeuer_Wert; // Zweiter Wert Zeiger zeigen auf NIL
 btnFirst.Enabled := false; // Knopf ausblenden
end;

{*******************************************************************************
*******************************************************************************}


procedure TForm1.btnNextClick(Sender: TObject);
Var
   Temp_Zahl : Integer; // Fürs Inkrementieren der Zahl

begin

 if pNeuer_Wert = nil then btnFirst.Click; // Wenn neue Wert ins Nichts zeigt, dann
  Temp_Zahl := pNeuer_Wert^.Zahl;
  new(pNeuer_Wert); // Neuen Wert Speicher anlegen
  pNeuer_Wert.Zahl := Temp_Zahl + 1;
  pNeuer_Wert^.Prev := pVorheriger_Wert; // Neue Wert am Ende zeigt auf das vorherige Element
  pNeuer_Wert^.Next := nil; // Neue Wert zeigt auf NIL
  pVorheriger_Wert^.Next := pNeuer_Wert; // Zeiger des vorherigen Elementes muss auf das neu erzeugte Element gesetzt werden
  pVorheriger_Wert := pNeuer_Wert; // ??
  btnRead.Click;
end;

{*******************************************************************************
*******************************************************************************}


procedure TForm1.btnReadClick(Sender: TObject);
begin
   if pVorheriger_Wert = nil then Exit; //??
   lbElemente.Clear;
   pAktueller_Wert := pVorheriger_Wert; //??
   While pAktueller_Wert^.Prev <> nil Do //??
    Begin // Solange letzter Wert ungleich nil,
     lbElemente.Items.Add(IntToStr(pAktueller_Wert^.Zahl));
     lbSpeicheradressen.Items.Add('');
     lbSpeicheradressen.Items.Add(Format('Next : x%x', [Integer(pAktueller_Wert^.Next)]));
     lbSpeicheradressen.Items.Add(Format('Prev : x%x', [Integer(pAktueller_Wert^.Prev)]));
     pAktueller_Wert := pAktueller_Wert.Prev; // Letzter Wert dem aktuellen Wert zuweisen
    End;
end;

{*******************************************************************************
*******************************************************************************}
Alles was ich mit / ?? Markiert habe, ist mir nicht ganz klar.
Ich habe das Grundprinzip verstanden, aber ich verstehe diese Zeilen nicht ganz. Wenn mir jemand verständlich erklären könnte, wieso man diese Zeilen so schreiben muss oder wieso sie so stehen müssen, dann wäre ich euch schon sehr dankbar.

Danke schonmal im voraus für die Hilfe.

Gruß

Matthias
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz