2015-02-21 1 views
1

Итак, я написал реализацию Stack с использованием связанных узлов, но хочу добавить метод рядом с pop(), который будет удалите второй элемент Linkedstack, а не верхний элемент. Я знаю, что точка реализации стека должна состоять только в том, чтобы удалить верхний элемент, но мне нужно реализовать этот метод.Я хочу, чтобы мой метод pop() в LinkedStack возвращал и удалял второй элемент в стеке не первый

Это код для метода pop() у меня уже есть:

public T pop() { 
    T top = peek(); 
    if (topNode != null) 
     topNode = topNode.getNextNode(); 
    return top; 
} 

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

Я просто не знаю, как это реализовать.

+0

* Зачем вам это нужно? – chrylis

ответ

3

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