我有一个堆栈的实现,除了push,peek和pop之外还返回最大值。这是我的代码。
static class MaxStack{
private Node top;
private Node maxTop;
private class Node{
int data;
Node next;
Node(int item){
this.data = item;
this.next = null;
}
}
void push(int item){
Node p = new Node(item);
if(top == null){
top = p;
Node q = new Node(item);
maxTop = q;
return;
}
p.next = top;
top = p;
if(item > maxTop.data){
Node q = new Node(item);
q.next = maxTop;
maxTop = q;
}
}
void pop(){
if(top == null) throw new IllegalStateException("Popping off and empty stack");
top = top.next;
if(top.data == maxTop.data){
maxTop = maxTop.next;
}
}
int peek(){
return top.data;
}
int peekMax(){
return maxTop.data;
}
在我使用此类的客户端代码中,我在pop方法中得到Null Pointer Exception
。
有人可以帮我理解这里的错误。