加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java数据结构 - 栈

发布时间:2020-12-15 07:34:28 所属栏目:Java 来源:网络整理
导读:class MyStack { // 栈的底层我们使用数组来存储数据 int [] elements; public MyStack() { elements = new int [0 ]; } // 压入元素 public void push( int element) { // 创建一个新的数组 int [] newArr = new int [elements.length+1 ]; // 把原数组中的
class MyStack {
    // 栈的底层我们使用数组来存储数据
    int[] elements;

    public MyStack() {
        elements = new int[0];
    }

    // 压入元素
    public void push(int element) {
        // 创建一个新的数组
        int[] newArr = new int[elements.length+1];
        // 把原数组中的元素复制到新数组中
        for (int i = 0; i < elements.length; i++) {
            newArr[i] = elements[i];
        }
        // 把添加的元素放入新数组中
        newArr[elements.length] = element;
        // 使用新的数组替换旧数组
        elements = newArr;
    }

    // 取出栈顶元素
    public int pop() {
        // 栈中没有元素
        if (elements.length == 0) {
            throw new RuntimeException("stack is empty");
        }
        // 取出数组的最后一个元素
        int element = elements[elements.length-1];
        // 创建一个新的数组
        int[] newArr = new int[elements.length-1];
        // 把原数组中除了最后一个元素的其它元素都复制到新数组中
        for (int i = 0; i < elements.length-1; i++) {
            newArr[i] = elements[i];
        }
        // 使用新的数组替换旧数组
        elements = newArr;
        // 返回栈顶元素
        return element;
    }

    // 查看栈顶元素
    public int peek() {
        // 栈中没有元素
        if (elements.length == 0) {
            throw new RuntimeException("stack is empty");
        }
        return elements[elements.length-1];
    }

    // 判断栈是否为空
    public boolean isEmpty() {
        return elements.length == 0;
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建一个栈
        MyStack ms = new MyStack();

        // 压入数据
        ms.push(9);
        ms.push(8);
        ms.push(7);

        // 取出栈顶元素
        // System.out.println(ms.pop());
        
        // 查看栈顶元素
        System.out.println(ms.peek());
        ms.pop();
        System.out.println(ms.peek());

        // 判断栈是否为空
        System.out.println(ms.isEmpty());
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读