欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实现栈 Stack

程序员文章站 2024-01-28 17:02:40
...

栈是Vector的一个子类,它实现了一个标准的后进先出的栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵守先进后出LIFO(Last In First Out)的原则
压栈:入数据在栈顶
实现栈 Stack
出栈:出数据在栈顶
栈是一种数据结构
实现Java语言中的栈(Stack),采用数组来实现
实现栈 Stack

import java.util.Arrays;

//顺序栈 使用数组
//(还可以用链式栈 链表实现 头插尾插都可以,头插复杂度低)

public class MyStack<T> {
    public T[] elem;//数组
    public int top;//表示当前可以存放数据元素的下标

    public MyStack() {
        this.elem = (T[])new Object[10];
    }

    public void push(T val) {
        if(full()) {
            this.elem = Arrays.copyOf(this.elem,2*this.elem.length);
        }
        this.elem[this.top++] = val;
    }

    public boolean empty() {
        return this.top == 0;
    }

    public boolean full() {
        return this.top == this.elem.length;
    }

    public T pop() {
        if(empty()) {
            throw new RuntimeException("栈空!");
            //return -1;
        }
        T data = this.elem[this.top-1];
        this.top--;
        return data;
        //return this.elem[--this.top];
    }

    public T peek() {
        if(empty()) {
            throw new RuntimeException("栈空!");
            //return -1;
        }
        return this.elem[this.top-1];
    }
    public int size() {
        return this.top;
    }

相关标签: Java