Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   verkettete listen erstellen (https://www.delphipraxis.net/16823-verkettete-listen-erstellen.html)

kriebs27 24. Feb 2004 10:34


verkettete listen erstellen
 
Hallo Leute,

ich kenn mich leider nur mit TP aus und wollt nun mal fragen wie ich eine verkettete Liste in Delphi erstellen kann.

Vielen Dank im Voraus
:wiejetzt:

Michael Leyhe 24. Feb 2004 10:39

Re: verkettete listen erstellen
 
HI

Herzlich Willkommen in der DP! :-D

Was genau meinst du mit verkettete Listen? :gruebel:

Mach mal ein Beispiel.

roderich 24. Feb 2004 10:40

Re: verkettete listen erstellen
 
hallo Krebs27,

das sollte genauso gehen, Pointer hast du unter Delphi wie du sie von TP kennst.

Roderich

Cuchulainn 24. Feb 2004 10:43

Re: verkettete listen erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
sieh dir mal dieses Programm an. Das ist ein Beispiel, das ich für eine Delphischulung programmiert habe, die ich vor einem Jahr gehalten habe. Es handelt sich um eine doppelt verkettete Liste. Sieh dir den Quelltext mal an. Wenn du Fragen dazu hast, kannst du sie gerne stellen. Ich werde dann versuchen, sie zu beantworten.

Salomon 24. Feb 2004 11:07

Re: verkettete listen erstellen
 
Hallo,
ich muste im Informatik LK auch schonmal verkette Listen programmieren. Auf meiner Homepage findest du ein Test Programm, dass dir bestimmt etwas weiterhilft:
Dynamische Listen Struktur

Salomon

manuel 24. Feb 2004 11:11

Re: verkettete listen erstellen
 
Hi,

wenn Du die Liste nicht explizit selbst programmieren musst, kannst du evtl einen fertigen Datentyp nehmen.
z.B. TList.
für Strings kannst du beispielsweise TStringlist benutzen.
Die ist fix und fertig implementiert. :zwinker:

Gruß

manuel

Skiron 24. Feb 2004 12:09

Re: verkettete listen erstellen
 
wenn mich nicht alles täuscht, sind verkette listen nichts anderes als arrays
in delphi gehts damit ein bisschen einfacher:
Delphi-Quellcode:
var
  Liste: array of MeinTyp;

...
  setLength(Liste, 1); //setzt dann die länge des Arrays
...
falls es sich in der Aufgabe darum handelt, eine verkette liste zu programmieren, kannste das logisch nicht nehmen.
da gibts aber dann noch was lustiges:

anstatt dem ganzen:
Delphi-Quellcode:
type
  PMeinTyp = ^TMeinTyp;
  TMeinTyp = record
    Item: integer;
    Next: PMeinTyp;
  end;

var
  First: PMeinTyp;

...
  new(First); //oder so, weiß es nicht mehr genau...
...
kannste nehmen:
Delphi-Quellcode:
var
  First: ^Integer;
  ItemCount: integer;
  GesuchtesElement: ^Integer;

...
//beim 1. mal:
  First := allocMem(0);
  ItemCount := 0;
//danach:
  inc(ItemCount); //oder dec(ItemCount), fallses eins weniger werden sollte...
  reallocMem(First, ItemCount * sizeOf(integer));
//und der zugriff is ganz toll: (mit einer function)

function Element(Index: integer): Pointer;
asm
  push esi
  push eax
  mov esi, First
  mov eax, Index
  imul eax, sizeof(Integer)
  add esi, eax
  mov GesuchtesElement, eax
  pop eax
  pop esi
end;

...
falls das noch gilt, is nämlich schon (fast) ein array

Chewie 24. Feb 2004 12:13

Re: verkettete listen erstellen
 
@Skiron:

Ersters ist eine verkettete Liste, zweiteres aber ein dynamisches Array. Warum du die Zugriffsfunktion in Assembler geschrieben hast, ist mir aber ein Rätsel :gruebel:

Skiron 24. Feb 2004 12:37

Re: verkettete listen erstellen
 
@Chewie: die Zugriffsprozedur deshalb in assembler, da bei mir die addition von Pointer und integer nicht so ganz geklappt hätte...

kriebs27 25. Feb 2004 11:52

Re: verkettete listen erstellen
 
Eine Frage hätte ich da noch und zwar ob man die Elemente dieser Kette mit Bmp´s füllen kann und falls ja wie man das macht. Konkret geht es darum dass ich als info projekt snake programmiere und ich mir gedacht habe das man dies am besten als schlange macht. nun wollte ich nun gerne die Elemente dieser schlange mit bmp's füllen. Vielen dank auch für die anderen antworten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:05 Uhr.
Seite 1 von 2  1 2      

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