Scala 堆栈

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)
    }
}

输出 :
“`scala Stack(2, 1, 5)
Popped:2
Popped:1
Empty:false
Popped:5
Empty:true

<pre><code class=" line-numbers"><br /> * **top*: 返回当前在栈顶的元素。

**示例 :**
“`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)
    }
}

输出 :

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程