Я создал структуру данных стека с нуля, используя связанный список. Кажется, push()
правильно, потому что я могу использовать метод отображения, используя first.data
, и он отображает список. Но когда я использую peek()
, я получаю NoSuchElementException
, потому что есть оператор if, если (first == null)
, но сначала не должно быть null
.
Я не уверен, как решить эту проблему по-другому.
public class StackNew implements Stack{ //Stack is an interface given by my professor
private int size;
private class Node {
public Object data;
public Node next;
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
}
private Node first = null;
public void push(Object newElement) {
first = new Node(newElement, first);
size++;
}
public Object peek(){
if (first == null) {
throw new NoSuchElementException();
}
return first.data;
}
public void display() {
Node previous = null;
while(first != null) {
System.out.println((first.data));
previous = first;
first = first.next;
}
}
public static void main(String args[]) {
StackNew stack = new StackNew();
stack.push("java");
stack.push(1);
stack.push("code");
stack.display();
System.out.println(stack.isEmpty());
stack.peek();
}
Когда я пытаюсь использовать метод peek (), первый узел имеет значение null, когда он должен содержать «код».