如何将Scala列表用作堆栈?

时间:2013-04-06 20:07:49

标签: scala

我正在尝试解决Scala中的hw问题。传统的解决方案需要堆栈,但到目前为止还没有在类中引入堆栈。仅列出了清单。我的问题是如何将列表视为堆栈?换句话说,我如何模仿列表中的推送和弹出元素?

1 个答案:

答案 0 :(得分:6)

我希望这会表明这个想法:

scala> val x = List(1,2,3)
x: List[Int] = List(1, 2, 3)

scala> val pushed0 = 0::x
push3: List[Int] = List(0, 1, 2, 3)

scala> val pop0 = pushed0.head
pop3: Int = 0
// it is actually more peek than fair pop 

scala> val stackAfterPop = pushed0.tail
stackAfterPop: List[Int] = List(1, 2, 3)

当您熟悉模式匹配时(下周我猜),它实际上会有更好的语法:

scala> val popped::stack = pushed0
popped: Int = 0
stack: List[Int] = List(1, 2, 3)