栈--数组实现

Posted inspire0x001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈--数组实现相关的知识,希望对你有一定的参考价值。

import java.util.Arrays;
import java.util.EmptyStackException;

public class ArrayStack<E> {

    protected Object[] elementData; //数组
    protected int elementCount; //元素个数
    protected int capacityIncrement; //扩容个数

    private static final long serialVersionUID = 1224463164541339165L;

    public ArrayStack(){}

    /**
     * 添加元素
     * @param item
     * @return
     */
    public E push(E item) {

        int minCapacity = elementCount+1;
        if (minCapacity - elementData.length > 0){
            //扩容

            int oldCapacity = elementData.length;
            int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                    capacityIncrement : oldCapacity);

            if (newCapacity - minCapacity < 0)
                newCapacity = minCapacity;
            elementData = Arrays.copyOf(elementData, newCapacity);
        }
        elementData[elementCount++] = item;

        return item;
    }

    /**
     * 删除元素
     * @return
     */
    public synchronized E pop() {
        E       obj;
        int     len = size();

        //拿到要删除的元素
        obj = peek();

        //做删除操作
        elementData[elementCount] = null;
        elementCount--;

        return obj;
    }

    public synchronized E peek() {
        //判断stack不为空
        int     len = size();
        if (len == 0)
            throw new EmptyStackException();

        int index = len -1;
        //防止数组下标越界
        if (index >= elementCount) {
            throw new ArrayIndexOutOfBoundsException(index + " >= " + elementCount);
        }
        E       obj;
        obj= (E) elementData[index];
        return  obj;
    }


    /**
     * 长度
     * @return
     */
    public synchronized int size() {
        return elementCount;
    }

}

 

以上是关于栈--数组实现的主要内容,如果未能解决你的问题,请参考以下文章

栈的实现原理

java数据结构-栈的底层实现:数组实现压入,弹出,判断空栈测试代码

算法笔记-数组实现栈,队列

数组模拟栈

栈———数组实现

数据结构——数组实现栈(C语言)