Ich muss gestehen, ich finde den Fehler im Pop nicht:
Code:
Exception in thread "main" java.lang.NullPointerException
at javaStack.Queue.pop(Queue.java:37)
at javaStack.QueueTest.main(QueueTest.java:11)
Java:
package javaStack;
public class Queue <T> {
private Node<T> first;
private Node<T> last;
private int idTicker;
public Queue() {
first = null;
last = null;
idTicker = 0;
}
public void push(T data) {
Node<T> newElement = new Node<T>(data, idTicker);
if(first == null && last == null) {
first = newElement;
last = newElement;
newElement.setPrevious(first);
newElement.setNext(null);
System.out.println("IF");
}else {
newElement.setPrevious(last);
last = newElement;
newElement.setNext(null);
System.out.println("Else");
}
idTicker++;
}
public void pop() {
if(first == null) {
System.out.println("The Queue ist empty!");
}else {
Node<T> n = first.getNext();
n.setPrevious(first);
first = n;
}
}
/*public void delete(int id) {
Node<T> it = first;
while(it.getNext() != null) {
if(it.getID() == id) {
Node<T> prev = it.getPrevious();
Node<T> next = it.getNext();
prev.setNext(it.getNext());
next.setPrevious(prev);
}
}
}*/
public String toString() {
StringBuilder result = new StringBuilder();
for(Node<T> it = first; it.getNext() != null; it = it.getNext()) {
System.out.println("Not Empty");
result.append(it.getData()).append(" ");
}
return result.toString();
}
}
Java:
package javaStack;
public class Node <T> {
private T data;
private int id;
private Node <T> next;
private Node <T> previous;
public Node(T dataValue, int id){
this.data = dataValue;
this.next = null;
this.previous = null;
this.id = id;
}
public void setNext(Node <T> next) {
this.next = next;
}
public Node <T> getNext(){
return next;
}
public int getID() {
return id;
}
public void setPrevious(Node <T> previous) {
this.previous = previous;
}
public Node<T> getPrevious(){
return previous;
}
public T getData() {
return data;
}
@Override
public String toString() {
return data + "\n";
}
}