![]() |
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 |
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.
|
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
|
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.
|
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".
|
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: |
Re: einfaches Sotieren mit Hilfe von Stacks
Delphi-Quellcode:
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.
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; Denke das müsste dir helfen ?! |
Re: einfaches Sotieren mit Hilfe von Stacks
Vielen Dank Wuaegner :lol: :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz