Last-In First-Out Stack

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

wunderkind

Betreff: Last-In First-Out Stack

BeitragFr, Aug 20, 2004 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgend das Beispiel eines Last-In First-Out Stacks. Was das ist? Ein Stapel, auf den oben immer fleißig Daten draufgelegt werden und anschließend in umgekehrter (und nur in dieser Reihenfolge!) wieder heruntergenommen.

Vielleicht braucht jemand derartiges, vielleicht hilft's auch einfach einmal mehr dem Verständnis von Types. Im Beispiel ist der abgelegte Wert ein String.

BlitzBasic: [AUSKLAPPEN]
Type tstack_node
Field id% ; stack id; user defined
Field value$ ; in this case a string
End Type


; push some values on different stacks
stack_push("0001",1)
stack_push("0002",1)
stack_push("a",2)
stack_push("b",2)
stack_push("anton",3)
stack_push("beton",3)
stack_push("0003",1)
stack_push("0004",1)

;pop and print values
Print(stack_pop(1))
Print(stack_pop(1))
Print(stack_pop(1))
Print(stack_pop(1))

Print(stack_pop(3))
Print(stack_pop(3))
Print(stack_pop(3))

Print(stack_pop(2))
Print(stack_pop(2))
Print(stack_pop(2))
Print(stack_pop(2))


WaitKey()


End


; ----------------------------------------------
; . functions


; ----------------------------------------------
; . stack_push()
Function stack_push(value$, stack_id%)
sn.tstack_node = New tstack_node
sn\id% = stack_id%
sn\value$ = value$
End Function
; end of function stack_push()
; ----------------------------------------------


; ----------------------------------------------
; . stack_pop()
Function stack_pop$(stack_id%)
sn.tstack_node = Last tstack_node

While sn <> Null
If sn\id% = stack_id% Then
value$ = sn\value$
Delete sn
Return value$
Else
sn = Before sn
End If
Wend
End Function
; end of function stack_pop()
; ----------------------------------------------


; ----------------------------------------------
; . stack_empty()
Function stack_empty()
For sn.tstack_node = Each tstack_node
Delete sn
Next
End Function
; end of function stack_empty()
; ----------------------------------------------


; end of functions
; ----------------------------------------------
  • Zuletzt bearbeitet von wunderkind am Fr, Aug 20, 2004 14:12, insgesamt 2-mal bearbeitet
 

Steffen

BeitragFr, Aug 20, 2004 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, aber ein Stack ist LIFO und nicht FIFO. Also
LIFO=Stack
FIFO=Queue

Du solltes das also ändern, wir wollen ja nicht, dass sich die Kiddies was falsches merken.
>PC: Pentium III 750MHz, ATI Rage 128 mit 32Mb, Windows Me, Blitz3D 1.87
>Laptop: Pentium M 1,4GHz, 512 Mb DDR, ATI Mobility Radeon 9000 mit 64Mb DDR, Windows XP Home, Blitz3D 1.87

wunderkind

BeitragFr, Aug 20, 2004 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehm, peinlich. Danke für den Hinweis.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group