[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