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


______________________________________________
[EMAIL PROTECTED] mailing list
http://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to