Open In App

Stack in Scala

Last Updated : 25 Apr, 2019
Suggest changes
Share
Like Article
Like
Report
A stack is a data structure that follows the last-in, first-out(LIFO) principle. We can add or remove element only from one end called top. Scala has both mutable and immutable versions of a stack. Syntax :
import scala.collection.mutable.Stack var s = Stack[type]() // OR var s = Stack(val1, val2, val3, ...) 
Operations on Stack
Once stack has been created we can either push elements to the stack or pop them out of the stack.
  • Push: We can push element of any type to the stack using push() function. All elements must have same data type. Example : scala
    // Scala program to // push element // to the stack import scala.collection.mutable.Stack // Creating object object GfG {    // Main method  def main(args:Array[String])  {  var s = Stack[Int]()    // pushing values  // one at a time  s.push(5)  s.push(1)  s.push(2)  println("s:" + s)  var s2 = Stack[Int]()  // pushing multiple values  s2.push(5,1,2)  println("s2:" + s2)    } } 
    Output:
    s:Stack(2, 1, 5) s2:Stack(2, 1, 5)
  • Pop: We can pop element from top of the stack using pop function. The function returns the same type as that of elements of the stack. Example : scala
    // Scala program to // pop element from // top of the stack import scala.collection.mutable.Stack // Creating object object GfG {    // Main method  def main(args:Array[String])  {  var s = Stack[Int]()  s.push(5)  s.push(1)  s.push(2)  println(s)  // pop element from  // top of the stack  println("Popped:" + s.pop)  println("Popped:" + s.pop)  println("Popped:" + s.pop)  } } 
    Output:
    Stack(2, 1, 5) Popped:2 Popped:1 Popped:5
Other Functions
Other Functions : Let's discuss some more functions with examples.
  • isEmpty: To check whether the stack is empty. Returns true if it is empty. Example : scala
    // Scala program to // check if the stack // is empty import scala.collection.mutable.Stack // Creating object object GfG {    // Main method  def main(args:Array[String])  {  var s = Stack[Int]()  s.push(5)  s.push(1)  s.push(2)  println(s)  // pop element from  // top of the stack  println("Popped:" + s.pop)  println("Popped:" + s.pop)  println("Empty:" + s.isEmpty)  println("Popped:" + s.pop)  // all three elements popped  println("Empty:" + s.isEmpty)  } } 
    Output:
    Stack(2, 1, 5) Popped:2 Popped:1 Empty:false Popped:5 Empty:true
  • top: Returns the element that is currently at the top of the stack. Example : scala
    // Scala program to // print top of stack import scala.collection.mutable.Stack // Creating object object GfG {    // Main method  def main(args:Array[String])  {  var s = Stack[Int]()  s.push(5)  s.push(1)  s.push(2)  println(s)  println("Top: " + s.top)  println("Popped:" + s.pop)  println("Top: " + s.top)  } } 
    Output:
    Stack(2, 1, 5) Top: 2 Popped:2 Top: 1
  • size:Returns the number of elements present in the stack. Example : Scala
    // Scala program to // print size of the stack import scala.collection.mutable.Stack // Creating object object GfG {    // Main method  def main(args:Array[String])  {  var s = Stack[Int]()  s.push(5)  s.push(1)  s.push(2)  println(s)  println("Size: " + s.size)  println("Popped:" + s.pop)  println("Size: " + s.size)  } } 
    Output:
    Stack(2, 1, 5) Size: 3 Popped:2 Size: 2

Next Article

Similar Reads

Article Tags :