现在的位置: 首页 > 综合 > 正文

用java源代码学数据结构<五>: Stack 详解

2018年03月20日 ⁄ 综合 ⁄ 共 1258字 ⁄ 字号 评论关闭

Stack类较为简单,它的主要基础是先进后出,注意Stack继承自Vector类,所以它的内部实现基本上都是直接调用Vector的方法,难度较小。

package java.util;


public
class Stack<E> extends Vector<E> {
    
	//无参构造函数
    public Stack() {
    }

    /**
     * Pushes an item onto the top of this stack. This has exactly
     * the same effect as:
     * addElement(item)
	*/
    public E push(E item) {
        addElement(item);

        return item;
    }

    /**
     * Removes the object at the top of this stack and returns that
     * object as the value of this function.
     */
    public synchronized E pop() {
        E       obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);

        return obj;
    }

    /**
     * Looks at the object at the top of this stack without removing it
     * from the stack.
     */
    public synchronized E peek() {
        int     len = size();

        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }

    /**
     * Tests if this stack is empty.
     *
     */
    public boolean empty() {
        return size() == 0;
    }

    /**
     * Returns the 1-based position where an object is on this stack.
     * If the object o occurs as an item in this stack, this
     * method returns the distance from the top of the stack of the
     * occurrence nearest the top of the stack; the topmost item on the
     * stack is considered to be at distance 1. The equals
     * method is used to compare o to the
     * items in this stack.
     */
    public synchronized int search(Object o) {
        int i = lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    private static final long serialVersionUID = 1224463164541339165L;
}

一起学习,一起进步,欢迎访问我的博客:http://blog.csdn.net/wanghao109

抱歉!评论已关闭.