![]() |
Re: Stack - erstes Element löschen
Delphi-Quellcode:
Ich hoffe, ich habe keinen Denkfehler dabei gemacht.
while (Stapel^.next <> nil) and (Stapel^.next^.next <> nil) do
Stapel := Stapel^.next; temp := Stapel^.next; Stapel^.next := nil; Dispose(temp); [edit] Doch, habe ich. Bei weniger als 2 Elementen haut das so nicht hin. Aber der Ansatz müsste zumindest richtig sein. [/edit] |
Re: Stack - erstes Element löschen
oh, danke Deddy :)
eine Frage dazu: bei Stapel^.next^.next rufst du das übernächste Element auf? Man kann ja auch eine Abfrage einbauen. Dann klappt das auch bei weniger als 2 Elementen. :) Meine Lösung war bisher noch
Delphi-Quellcode:
Aber dann hab ich das Problem, dass das jetzt erste Element, auf das gerade gelöschte zeigt.
procedure letztesloeschen(AStapel:PStapel);
var Hilf:PStapel; begin Hilf:= AStapel; While Hilf^.next <> nil do Hilf:= Hilf^.next; Dispose(Hilf); end; |
Re: Stack - erstes Element löschen
Ich habe mir gedacht, ich bleibe beim "vorletzten" Element stehen, da ich ja das letzte löschen will.
|
Re: Stack - erstes Element löschen
Hallo Leute,
man kann einen Stapel auf der Basis einer einfach verketteten Liste implementieren und man kann in einer solchen Liste auch ein beliebiges Element löschen, aber dann spricht man nicht mehr von einem Stapel - der kennt nur PUSH, POP, PEEK, ISEMPTY, CLEAR. Auch wenn hier ohne Klassen implementiert wird, sollte man die beiden Abstraktionsebenen LISTE und STAPEL sauber auseinander halten. Und auch PStapel = ^TZettel ist ein Stilfehler.
Delphi-Quellcode:
Hier sind noch eine Reihe von handwerklichen Fehlern enthalten, aber ich fürchte, dass das in diesem Thread nicht so sehr von Interesse ist.
type
PZettel = ^TZettel; TZettel = record inhalt: string; next: PZettel; end; var stapel: PZettel; Freundliche Grüße |
Re: Stack - erstes Element löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend,
ein Bild sagt mehr als tausend Worte.... Wer mehr Infos zu Stapel, Kellerautomaten und lifo (Last in First out) haben möchte kann gerne mal ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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