从Stack中取出第二个元素

时间:2011-03-22 15:52:21

标签: scala stack

我正在学习Scala。但是,在练习中,我遇到了Stack的一些问题。如何从堆栈中删除第二个元素。我必须删除第二个元素并放回顶部元素。

谢谢你的提前

3 个答案:

答案 0 :(得分:5)

我不知道scala,但通常你会这样做

variable = pop()
pop()
push(variable) 

保存第一个元素,将第二个元素弹出到必杀技 然后再将第一个元素推到顶部

答案 1 :(得分:2)

我对Scala一无所知,但堆栈是堆栈。

在堆栈上调用pop并将返回的值分配给临时变量,然后再次弹出并推回您使用第一个调用pop分配的元素。

伪代码:

tempVar = stack.pop();
stack.pop();
stack.push(tempVar);

答案 2 :(得分:1)

Stack和List之间没有太大区别,Scala API文档也说明了这一点。

如果使用List,则采用不同的方法:

val result: (Option[T], List[T]) = myList match {
  case first :: x :: rest => (Some(x), first :: rest)
  case list => (None, list)
}

结果的显式类型是为了清楚起见。这样做的好处是,如果没有第二项,你不会抛出异常,这是如何使用模式匹配的一个很好的例子。