Извлечение второго элемента из стека - PullRequest
1 голос
/ 22 марта 2011

Я учу Scala. Однако в упражнении у меня есть некоторые проблемы со стеком. Как я могу удалить второй элемент из стека. Я должен удалить второй элемент и вернуть верхний элемент.

Спасибо за ваше продвижение

Ответы [ 3 ]

5 голосов
/ 22 марта 2011

я не знаю, scala, но обычно вы делаете

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

сохраните первый элемент, вставьте второй в нирвану а затем снова нажмите первый элемент сверху

2 голосов
/ 22 марта 2011

Я ничего не знаю о Scala, но стек - это стек.

Вызовите pop в стеке и присвойте возвращаемое значение временной переменной, затем снова нажмите и отодвиньте элемент, который вы назначили первым вызовом tot pop.

Псевдокод:

tempVar = stack.pop();
stack.pop();
stack.push(tempVar);
1 голос
/ 23 марта 2011

Нет большой разницы между стеком и списком, и документация по Scala API также говорит об этом.

При использовании списка другой подход к этому:

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

Ясный тип результата для ясности. Преимущество в том, что вы не будете выдавать исключение, если второго элемента нет, и это хороший пример того, как использовать сопоставление с образцом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...