📜  Scala中的堆栈

📅  最后修改于: 2022-05-13 01:55:14.386000             🧑  作者: Mango

Scala中的堆栈

堆栈是一种遵循后进先出(LIFO) 原则的数据结构。我们只能从称为top的一端添加或删除元素。 Scala 有可变和不可变版本的堆栈。
句法 :

import scala.collection.mutable.Stack
var s = Stack[type]()

// OR
var s = Stack(val1, val2, val3, ...)
堆栈上的操作

创建堆栈后,我们可以将元素送到堆栈或将它们从堆栈中弹出

  • Push :我们可以使用push()函数将任何类型的元素推送到堆栈。所有元素必须具有相同的数据类型。
    例子 :
    // 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)
          
        }
    }
    

    输出

    s:Stack(2, 1, 5)
    s2:Stack(2, 1, 5)
  • Pop :我们可以使用pop函数从栈顶弹出元素。该函数返回与堆栈元素相同的类型。
    例子 :
    // 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)
        }
    }
    

    输出

    Stack(2, 1, 5)
    Popped:2
    Popped:1
    Popped:5
其他功能

其他功能:
让我们通过示例讨论更多功能。

  • isEmpty :检查堆栈是否为空。如果为空,则返回true
    例子 :
    // 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)
        }
    }
    

    输出

    Stack(2, 1, 5)
    Popped:2
    Popped:1
    Empty:false
    Popped:5
    Empty:true
  • top :返回当前位于栈顶的元素。
    例子 :
    // 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)
        }
    }
    

    输出

    Stack(2, 1, 5)
    Top: 2
    Popped:2
    Top: 1
  • size :返回堆栈中存在的元素数。
    例子 :
    // 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)
        }
    }
    

    输出

    Stack(2, 1, 5)
    Size: 3
    Popped:2
    Size: 2