Java中的MaxStack实现

时间:2016-03-05 19:56:07

标签: java

我有一个堆栈的实现,除了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

有人可以帮我理解这里的错误。

0 个答案:

没有答案