Delphi Stack

razmond

Newbie
Registriert
Aug. 2009
Beiträge
3
Hallo
kann mir jemand sagen, wie man mit Delphi einen Stapel (Stack als Datenspeicherstruktur) herstellt, die von der Benutzerschnitstelle (Buttonclick o.Ä.) mehrmals created werden kann? Stack kann folgende Proceduren haben Push, Pop und von dem Typ TList abgeleitet sein. Hat jemand einen Rat wie man das macht?
Vielen Dank im voraus
Razmond
 
Einen Stack von TList abzuleiten, halte ich für nicht sonderlich glücklich, da man über die Eigenschaften von TList jederzeit auch Zugriff auf die übrigen Elemente des Stacks erhalten kann. Außerdem werden diese ganzen Funktionen nicht benötigt und blähen das Programm nur unnötig auf.

Trotzdem könnte eine entsprechende Implementierung in etwa so aussehen:

Code:
interface

uses Classes;

type
  TStack = class(TList)                   //Von TList ableiten
  public
    function push(Item:Pointer):Integer;  // Legt Element auf Stapel ab und gibt
                                          // dessen Index zurück
    function pop:Pointer;                 // holt das zuletzt abgelegte element
                                          // vom Stapel und löscht es
  end;

implementation

{ TStack }

function TStack.pop: Pointer;
begin
  if Count > 0 then                       // Überprüfen, ob die Liste leer ist
  begin
    result := Items[Count - 1];           // Rückgabe-Pointer in Result ablegen
    Count := Count - 1;                   // Letztes Element löschen
  end
  else
  begin
    result := NIL;
  end;
end;

function TStack.push(Item: Pointer): Integer;
begin
  result := Add(Item);
end;

Zum erstellen kann man einfach
Code:
StackVar := TStack.Create;
aufrufen bzw.
Code:
FreeAndNil(StackVar);
, wenn die entsprechende Instanz nicht mehr gebraucht wird.
 
Zurück
Oben