AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack - erstes Element löschen

Ein Thema von spox · begonnen am 7. Sep 2008 · letzter Beitrag vom 7. Sep 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

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

Re: Stack - erstes Element löschen

  Alt 7. Sep 2008, 14:47
Delphi-Quellcode:
while (Stapel^.next <> nil) and (Stapel^.next^.next <> nil) do
  Stapel := Stapel^.next;
temp := Stapel^.next;
Stapel^.next := nil;
Dispose(temp);
Ich hoffe, ich habe keinen Denkfehler dabei gemacht.

[edit] Doch, habe ich. Bei weniger als 2 Elementen haut das so nicht hin. Aber der Ansatz müsste zumindest richtig sein. [/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
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#12

Re: Stack - erstes Element löschen

  Alt 7. Sep 2008, 14:55
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:
procedure letztesloeschen(AStapel:PStapel);
var
  Hilf:PStapel;
begin
  Hilf:= AStapel;
  While Hilf^.next <> nil do Hilf:= Hilf^.next;
  Dispose(Hilf);
end;
Aber dann hab ich das Problem, dass das jetzt erste Element, auf das gerade gelöschte zeigt.
MfG,
spox
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Stack - erstes Element löschen

  Alt 7. Sep 2008, 15:23
Ich habe mir gedacht, ich bleibe beim "vorletzten" Element stehen, da ich ja das letzte löschen will.
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Stack - erstes Element löschen

  Alt 7. Sep 2008, 15:40
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:
type
  PZettel = ^TZettel;
  TZettel = record
    inhalt: string;
    next: PZettel;
  end;

var
  stapel: PZettel;
Hier sind noch eine Reihe von handwerklichen Fehlern enthalten, aber ich fürchte, dass das in diesem Thread nicht so sehr von Interesse ist.

Freundliche Grüße
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Stack - erstes Element löschen

  Alt 7. Sep 2008, 17:46
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 hier schauen.
Angehängte Dateien
Dateityp: pdf stapel_111.pdf (100,8 KB, 5x aufgerufen)
Klaus
  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 02:53 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