Open In App

Stack in Scala

Last Updated : 25 Apr, 2019
Improve
Improve
Like Article
Like
Save
Share
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 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 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 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 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 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


Previous Article
Next Article

Similar Reads

Scala Stack ++ method with example
In Scala, scala.collection.mutable implements Stack data structure. The ++ method gives a new stack with elements from the left hand operand followed by the elements from the right hand operand. Method Definition - def ++[B](that: GenTraversableOnce[B]): Stack[B] Returns - A new stack which contains all elements of this stack followed by all elemen
1 min read
Scala Stack ++:() method with example
In Scala, scala.collection.mutable implements Stack data structure. The ++: method is similar to ++ method in Stack which gives a new stack with elements from the left hand operand followed by the elements from the right hand operand. But with the difference that in ++:() right operand determines the type of the resulting collection rather than the
2 min read
Scala Stack +:() method with example
In Scala, scala.collection.mutable implements Stack data structure. The +: method is similar to ++ method in Stack which gives a copy of the stack with an element prepended. Note that the ending operators are right associative. Method Definition - def +:(elem: A) Returns - A new stack consisting of elem followed by all elements of this stack. Examp
1 min read
Scala Stack :+() method with example
In Scala, scala.collection.mutable implements Stack data structure. The :+ method is used to create a copy of this stack with an element appended. Method Definition - def :+(elem: A) Returns - a new stack consisting of all elements of this stack followed by elem. Example #1: // Scala program of mutable stack :+() method // Import Stack import scala
1 min read
Scala Stack /:() method with example
In Scala, scala.collection.mutable implements Stack data structure. The /: method applies a binary operator to a start value and all elements of this traversable or iterator, going left to right. Method Definition - def /:[B](z: B)(op: (B, A) ? B): B Returns - the result of inserting op between consecutive elements of this traversable or iterator.
1 min read
Scala Stack :() method with example
In Scala, scala.collection.mutable implements Stack data structure. The :\ method applies a binary operator to a start value and all elements of this traversable or iterator, going right to left. Method Definition - def :\[B](z: B)(op: (A, B) ? B): B Returns - the result of inserting op between consecutive elements of this traversable or iterator.
1 min read
Scala Stack push() method with example
In Scala Stack class, the push() method is utilized to add an element on the top of the stack. Method Definition: def push(elem: A): Stack.this.type Return Type: It adds an element on the top of the stack. Example #1: // Scala program of push() // method import scala.collection.mutable.Stack // Creating object object GfG { // Main method def main(a
1 min read
Scala Stack pop() method with example
In Scala Stack class, the pop() method is utilized to remove and return the element at the top of the stack. Method Definition: def pop(): A Return Type: It removes and returns the element at the top of the stack. Example #1: // Scala program of pop() // method import scala.collection.mutable.Stack // Creating object object GfG { // Main method def
2 min read
Scala Stack pushAll() method with example
In Scala Stack class, the pushAll() method is utilized to add the elements from a collection to a stack. Method Definition: def pushAll(elems: IterableOnce[A]): Stack.this.type Return Type: It returns a stack that contains all the elements of the given collection. Example #1: // Scala program of pushAll() // method import scala.collection.mutable.S
1 min read
Scala Stack contains() method with example
In Scala Stack class, the contains() method is utilized to check if an element is present in the stack of not. Method Definition: def contains(elem: A): Boolean Return Type: It returns true if the element is present in the stack or else it returns false. Example #1: // Scala program of contains() // method import scala.collection.mutable.Stack // C
1 min read
Article Tags :