[R] push/pop on a stack
Barry Rowlingson
B.Rowlingson at lancaster.ac.uk
Tue Feb 25 19:11:04 CET 2003
> It seems like it wouldn't be difficult, and that someone may have already
> implemented a set of stack functions, and I wouldn't like to duplicate it.
Here's a Tuesday evening lash-up. Usage is:
> mystack <- stack() # initialisation
> push(mystack,value) # stores something on the stack
> pop(mystack) # returns 'value'
There's a print method that lists the stack. Its simply a list. Stack
underflow is reported as 'attempt to select less than one element'. You
can push anything on the stack. Almost. I just tried pushing a stack
object onto the stack, and got infinite recursion, cant think why.
Anyway, this seems to work for most sensible situations!
stack <- function(){
it <- list()
res <- list(
push=function(x){
it[[length(it)+1]] <<- x
},
pop=function(){
val <- it[[length(it)]]
it <<- it[-length(it)]
return(val)
},
value=function(){
return(it)
}
)
class(res) <- "stack"
res
}
print.stack <- function(x,...){
print(x$value())
}
push <- function(stack,obj){
stack$push(obj)
}
pop <- function(stack){
stack$pop()
}
Baz
More information about the R-help
mailing list