Scala中的堆栈

堆栈是遵循线性数据结构后进先出用于将元素添加到它(LIFO)原则。

现实生活中的堆栈数据结构的一个示例是一堆书相互叠放。您可以从此书堆中移出最后放在书堆中的书。

因此,在堆栈中,元素的添加和删除仅从称为堆栈顶部的一端开始。在Scala中,可以有可变堆栈和不可变堆栈。

创建堆栈的语法

可变堆栈:

import scala.collection.mutable.Stack
var stack_name = Stack(val1, val2, val3, ...)

Scala程序创建堆栈

import scala.collection.mutable.Stack

object MyClass {
    def main(args: Array[String]) {
       val stack1 = Stack(34, 89, 1, 67, 100, 99, 50)
       println("Stack stack1 = " + stack1)
       val stack2 = Stack[String]()
       println("Empty Stack stack2 = " + stack2)
    }
}

输出:

Stack stack1 = Stack(34, 89, 1, 67, 100, 99, 50)
Empty Stack stack2 = Stack()

堆栈上的操作

在堆栈数据结构上可以完成一些基本操作。他们是,

  1. 流行音乐

1)推栈操作

堆栈上的推入操作只是在堆栈中添加新元素。使用push()函数完成推入操作。推送的元素应具有相同的数据类型。

语法:

将单个元素添加到堆栈中:

stack_name.push(element)

将多个元素添加到堆栈中:

stack_name.push(element1, element2, element3)

Scala程序将元素推入堆栈

import scala.collection.mutable.Stack

object MyClass {
    def main(args: Array[String]) {
      val stack1 = Stack[String]()
      
      println("Empty Stack!" + stack1)
      println("Adding single Element to the Stack")
      
      stack1.push("Scala")
      
      println("Stack after push operation : " + stack1)
      println("Adding multiple Elements to the Stack")
      
      stack1.push("Javascript", "Python", "C/C++")
      
      println("Stack after push operation : " + stack1)
    }
}

输出:

Empty Stack!Stack()
Adding single Element to the Stack
Stack after push operation : Stack(Scala)Adding multiple Elements to the Stack
Stack after push operation : Stack(C/C++, Python, Javascript, Scala)

说明:

该代码说明了堆栈上的推入操作。在这里,我们创建了一个名为stack1的空堆栈,然后使用push()方法将元素压入堆栈。该方法可以采用一个或多个元素并将其推入堆栈。当我们将多个元素推入堆栈时。该函数的最后一个参数将在堆栈的顶部。

2)在堆栈上弹出操作

完成堆栈上的弹出操作以将最后添加的元素删除到堆栈中。众所周知,弹出(删除)操作将使用pop函数从堆栈的顶部完成。

弹出功能从堆栈中弹出一个元件,然后将其返回到即弹出的值调用代码被使用返回的弹出功能。

语法:

pop

Scala程序从堆栈中弹出元素

import scala.collection.mutable.Stack

object MyClass {
    def main(args: Array[String]) {
      val langStack = Stack[String]("C/C++", "Scala", "Python", "Javascript")

      println("The Stack : " + langStack)

      println("Popping elements from stack ")
      println("Popped element : "+ langStack.pop)
      println("The Stack after pop operation : " + langStack)
      println("Popped element : "+ langStack.pop)
      println("The Stack after pop operation : " + langStack)
    }
}

输出:

The Stack : Stack(C/C++, Scala, Python, Javascript)
Popping elements from stack 
Popped element : C/C++
The Stack after pop operation : Stack(Scala, Python, Javascript)Popped element : Scala
The Stack after pop operation : Stack(Python, Javascript)

说明:

在上面的代码中,我们已经说明了堆栈上的pop操作。在这里,我们创建了一个名为langStack的字符串类型的堆栈,其中包含四个元素。然后,我们使用pop方法将元素弹出到堆栈顶部。当pop方法返回pop元素时,我们已经打印出popped元素。