Java通过链表实现栈

class LinkedStack<T> {
    private Node top;
    private int size;

    /**
     * 初始化栈
     */
    public LinkedStack() {
        top = null;
        size = 0;
    }

    /**
     * 判断栈是否为空
     * 
     * @return
     */
    public boolean isEmpty() {
        return size == 0;
    }

    /**
     * 清空栈元素
     */
    public void clear() {
        top = null;
        size = 0;
    }

    /**
     * 获取栈的大小
     * 
     * @return
     */
    public int length() {
        return size;
    }

    /**
     * 将一个数据入栈
     * 
     * @param data
     * @return
     */
    public boolean push(T data) {
        Node node = new Node(data);
        node.pre = top;
        top = node;
        size++;
        return true;
    }

    /**
     * 将数据出栈,并删除
     * 
     * @return
     */
    public T pop() {
        if (top != null) {
            Node node = top;
            top = top.pre;
            size--;
            return node.data;
        }
        return null;
    }

    /**
     * 获取栈顶元素,但不删除该栈元素数据
     * 
     * @return
     */
    public T peek() {
        if (top != null) {
            return top.data;
        }
        return null;
    }

    /**
     * 节点类
     * 
     * @author John
     *
     */
    private class Node {
        Node pre;
        T data;

        public Node(T data) {
            this.data = data;
        }
    }
}

 

posted @ 2016-08-22 09:18  SaraMorning  阅读(488)  评论(0编辑  收藏  举报