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