代码实现栈结构

  • A+
所属分类:JAVA


共计 919 个字符,预计需要花费 3 分钟才能阅读完成。

栈(Stack)又称先进后出(Last In First Out)的线性表简称LIFO结构,栈结构包含栈顶和栈底。

栈顶:插入和删除的一端;
栈底:不会有任何操作的一端;
不含任何数据元素的栈称为空栈
栈的插入操作,叫做进栈,也称压栈,入栈
栈的删除操作,叫做出栈,也有的叫做弹栈

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

public class MyFirstStack<T> {
    private T[] props;
    private int size = 0;
    private static final int INIT_CAPACITY = 16;

    public MyFirstStack() {
        props = (T[]) new Object[INIT_CAPACITY];
    }

    public void push(T elem) {
        ensureCapacity();
        props[size++] = elem;
    }

    public T pop() {
        if (size == 0)
            throw new EmptyStackException();
        int tempSize = --size;
        T t = props[tempSize];
        props[tempSize] = null;
        return t;
    }

    private void ensureCapacity() {
        if (props.length <= size) {
            System.out.println("扩容");
            props = Arrays.copyOf(props, 2 * size + 1);
        }
    }
}

class MyStackDemo {
    public static void main(String[] args) {
        MyFirstStack<String> stringMyStack = new MyFirstStack<>();
        for (int i = 0; i < 100; i++) {
            System.out.println("push" + (i + 1) + "");
            stringMyStack.push((i + 1) + "");
        }
        for (int i = 90; i > 0; i--) {
            System.out.println("pop" + stringMyStack.pop());
        }
    }
}
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: