"{ Package: 'stx:goodies/tgen' }"
OrderedCollection subclass:#Stack
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Collections-Ordered'
!
!Stack class methodsFor:'documentation'!
documentation
"
a simple implementation of a Stack.
[author:]
Stefan Vogel
[see also:]
OrderedCollection Queue
"
!
examples
"
push-push-....
[exBegin]
|aStack|
aStack := Stack new.
Transcript showCR:aStack.
Transcript showCR:'push 1: '.
aStack push:1.
Transcript showCR:'push 2: '.
aStack push:2.
Transcript showCR:'push 3: '.
aStack push:3.
Transcript showCR:aStack.
Transcript show:'pop: '; showCR:(aStack pop).
Transcript show:'pop: '; showCR:(aStack pop).
Transcript show:'pop: '; showCR:(aStack pop).
Transcript showCR:aStack.
[exEnd]
popping too many:
[exBegin]
|aStack|
aStack := Stack new.
aStack push:1.
aStack pop.
aStack pop.
[exEnd]
"
! !
!Stack class methodsFor:'instance creation'!
new
^ self new:100
! !
!Stack methodsFor:'accessing'!
pop
"Answer the object on top of the stack."
^ self removeLast
!
pop: numElem
"Pop and discard top numElems and answer receiver"
self removeLast:numElem
!
push: anObject
"Push anObject onto the top of the stack."
^ self add:anObject
!
top
"Answer (without removing) the object on top of the stack."
^ self last
! !
!Stack methodsFor:'enumerating'!
do: aBlock
"Evaluate aBlock for each object on the stack, from top to bottom."
^ super reverseDo:aBlock
!
reverseDo: aBlock
"Evaluate aBlock for each object on the stack, from bottom to top."
^ super do:aBlock
! !
!Stack class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libbasic2/Stack.st,v 1.4 2002-09-30 15:59:25 stefan Exp $'
! !