Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   einfaches Sotieren mit Hilfe von Stacks (https://www.delphipraxis.net/32086-einfaches-sotieren-mit-hilfe-von-stacks.html)

Sqeese 18. Okt 2004 14:37


einfaches Sotieren mit Hilfe von Stacks
 
HI Leuts!
Ich hab da nen Problem. Ich soll ne zeichenkette mit hilfe von 3 Stacks sortieren. Die Kette besteht nur aus den Buchstaben A und B(quasi der erste Stack). Die A´s sollen in einen stack und die B´s in einen. is der erste stack leer sollen erst alle A´s wieder auf den ersten stack gelegt werden und dann alle B´s. und die ganze sache soll "grafisch" in 3 Listboxen verfolgt werden können.

Hoffe ihr könnt mir helfen. Thx schon mal. Sqeese

Dax 18. Okt 2004 15:01

Re: einfaches Sotieren mit Hilfe von Stacks
 
Du gehts mit einer for-Schleife durch den String durch und füllst je nachdem welcher Buchstabe gerade dran ist, eine der ListBoxen. Nach dem Ende der Schleife füllst du einfach den Inhalt der einen Listbox in eine andere und leerst diese eine Listbox dann.

Sqeese 18. Okt 2004 15:18

Re: einfaches Sotieren mit Hilfe von Stacks
 
so einfach darf ich´s mir leider nich machen. die vorgabe is, dass ich das mit 3 stacks machen soll

Dax 18. Okt 2004 15:32

Re: einfaches Sotieren mit Hilfe von Stacks
 
Dann mach' es so: fülle den ersten Stack mit dem String und gehe dann durch diesen ersten Stack durch, wobei du den zweiten und dritten füllst.

Wuaegner 18. Okt 2004 15:33

Re: einfaches Sotieren mit Hilfe von Stacks
 
Dann "create" 3 Stringlists, und füge mit TStringlist.Add deine Zeichen hinzu. Deine Stringlist ist dann dein "Stack".

Sqeese 18. Okt 2004 16:34

Re: einfaches Sotieren mit Hilfe von Stacks
 
Also ich würde es schon so machen wie Dax, nur fehlt mir leider die Kenntnis, wie ich das quelltextmäßig umsetze. ich seh momentan bei diesem ganzen pop,push, init etc. nich durch...
:cry: :cry: :cry:

Wuaegner 18. Okt 2004 16:43

Re: einfaches Sotieren mit Hilfe von Stacks
 
Delphi-Quellcode:
  TStack = class
  private
    { Private-Deklarationen}
  theStack: TStringList;
  public
    { Public-Deklarationen}
     constructor Create;
     destructor Destroy; override;
     function Pop: String;
     procedure Push(s: String);
     function IsEmpty: Boolean;
     function ShowTop: String;
     procedure Clear;
     
  end;



implementation

{$R *.DFM}


////////////Stack//////////
constructor TStack.Create;
begin
   inherited;
   theStack := TStringList.Create;
end;

destructor TStack.Destroy;
begin
   theStack.Free;
   inherited;
end;

function TStack.Pop: String;     {Popt die oberste Zahl vom Stack}
begin
   Result := '';
     if IsEmpty then
        raise exception.Create('Stack is empty');
     Result := theStack.Strings[theStack.Count-1];
   theStack.Objects[theStack.Count-1].Free;
   theStack.Delete(theStack.Count-1)
end;



procedure TStack.Push(s: String);
begin
   theStack.Add(s);
end;



function TStack.IsEmpty: Boolean;
begin
   Result := (theStack.Count = 0);
end;

function TStack.ShowTop: String; {Zeigt obersten String des Stacks an ohne ihn danach zu löschen}
begin
   Result := '';
   if IsEmpty then
      raise exception.Create('Stack is empty');
   Result := theStack.Strings[theStack.Count-1]
end;


procedure TStack.Clear;
begin
   theStack.Clear;
end;


{Ende der Stack Prozeduren}

procedure TForm1.FormCreate(Sender: TObject);
begin
 DeinStack:= TStack.Create;                            
end;
Jetzt kannst du mit TStack.Pop das oberste Zeichen abrufen, mit TStack.Push ein Zeichen draufpacken, mit ShowTop das oberste Zeichen nur ZEIGEN ohne es runterzuholen.
Denke das müsste dir helfen ?!

Sqeese 18. Okt 2004 17:27

Re: einfaches Sotieren mit Hilfe von Stacks
 
Vielen Dank Wuaegner :lol: :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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