二、栈(stack)

栈(stack),是一种线性存储结构,它有以下几个特点:
(01) 栈中数据是按照"后进先出(LIFO, Last In First Out)"方式进出栈的。
(02) 向栈中添加/删除数据时,只能从栈顶进行操作。

栈通常包括的三种操作:push、peek、pop。
push -- 向栈中添加元素。
peek -- 返回栈顶元素。
pop -- 返回并删除栈顶元素的操作。

package net.good.spring;

import java.lang.reflect.Array;

public class GeneralArrayStack<T> {

    private static final int DEFAULT_SIZE = 10;
    private T[] array;
    private int size;

    public GeneralArrayStack(Class<T> cls, int capacity) {
        this.array = (T[]) Array.newInstance(cls, capacity);
        this.size = 0;
    }

    public GeneralArrayStack(Class<T> cls) {
        this(cls, DEFAULT_SIZE);
    }

    // 将value添加到栈中
    public void push(T value){
        if (this.size >= array.length) {
            throw new ArrayIndexOutOfBoundsException();
        }
        array[this.size++] = value;
    }

    // 返回“栈顶元素值”
    public T peek(){
        return array[this.size-1];
    }
    // 返回“栈顶元素值”,并删除“栈顶元素”
    public T pop(){
        if (isEmpty()) {
            throw new NullPointerException();
        }
        T ret = array[this.size-1];
        this.size--;
        return ret;
    }
    // 返回“栈”的大小
    public int size(){
        return this.size;
    }

    public boolean isEmpty(){
        return this.size == 0;
    }


}

参考:skywang12345
还有一种思路可用Array数组实现的方式去实现栈可参考:哈哈大圣

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容