AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Doppelt verkettete Liste als generischer Typ
Thema durchsuchen
Ansicht
Themen-Optionen

Doppelt verkettete Liste als generischer Typ

Ein Thema von Schorschi5566 · begonnen am 29. Sep 2014 · letzter Beitrag vom 29. Sep 2014
Antwort Antwort
Seite 2 von 2     12   
CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#11

AW: Doppelt verkettete Liste als generischer Typ

  Alt 29. Sep 2014, 14:05
Ich glaube du vermischst hier Daten und die Listen-Items. Falls ich dich richtig verstehe würde es meiner Meinung nach so aussehen:

Delphi-Quellcode:
type
  TChainList<T> = class(TPersistent)
  private
    FData:T;
    FDeleting: Boolean;
    FEol: Boolean;
    FPredecessor: TChainList;
    FSuccessor: TChainList;
    function GetEol: Boolean;
    procedure SetDeleting(const Value: Boolean);
    property Deleting: Boolean read FDeleting write SetDeleting;
  public
    destructor Destroy; override;
    procedure Add(Item: T);
    function Delete: TChainList;
    function Last: TChainList;
    function First: TChainList;
    function Next: TChainList;
    function Previous: TChainList;
    property Eol: Boolean read GetEol;
    property Data: T read FData write FData;
  end;

  TTestClass = class(TChainList<string>)

  end;
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

AW: Doppelt verkettete Liste als generischer Typ

  Alt 29. Sep 2014, 14:05
Was hältst Du von diesem Ansatz?
Delphi-Quellcode:
type
  TChainElement<T> = class
  private
    FData: T;
    FNext: TChainElement<T>;
    FPrior: TChainElement<T>;
  public
    property Data: T read FData write FData;
    property Next: TChainElement<T> read FNext write FNext;
    property Prior: TChainElement<T> read FPrior write FPrior;
  end;

  TChain<T> = class
  private
    FFirstElement: TChainElement<T>;
    FLastElement: TChainElement<T>;
    FCurrentElement: TChainElement<T>;
    function GetNext: TChainElement<T>;
    function GetPrior: TChainElement<T>;
    function GetBOF: Boolean;
    function GetEOF: Boolean;
    function GetFirst: TChainElement<T>;
    function GetLast: TChainElement<T>;
  public
    function Add: TChainElement<T>;
    procedure Delete(Item: TChainElement<T>);
    procedure Clear;
    property BOF: Boolean read GetBOF;
    property EOF: Boolean read GetEOF;
    property First: TChainElement<T> read GetFirst;
    property Last: TChainElement<T> read GetLast;
    property Next: TChainElement<T> read GetNext;
    property Prior: TChainElement<T> read GetPrior;
  end;
Und wenn Du unbedingt willst, kannst Du die Listenklasse weglassen und alles in der Element-Klasse implementieren.

[edit] Na toll, da tippe ich mir einen ab und andere sind wieder schneller. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (29. Sep 2014 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#13

AW: Doppelt verkettete Liste als generischer Typ

  Alt 29. Sep 2014, 14:34
Vielen Dank. Das hilft mir weiter.


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: Doppelt verkettete Liste als generischer Typ

  Alt 29. Sep 2014, 19:22
In Spring4D gibt's auch eine Implementierung.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 07:12 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