java 数据结构与算法---栈

时间:2021-06-12 17:50:23

原理来自百度百科

一、栈的定义

栈是一种只能在一端进行插入和删除操作的特殊线性表;它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来);栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;插入一般称为进栈(PUSH),删除则称为退栈(POP)。

                                                                  java 数据结构与算法---栈

     

二、栈的实现

 

package com.jalja.org.arith;


public class MyStack<E>{
    private Object [] arr;//存储
    private int index;//栈元素实际入栈索引
    private int maxSize;//栈的最大空间
    
    private MyStack(int maxSize) {
        this.arr=new Object[maxSize];
        this.index=0;
        this.maxSize=maxSize;
    }
    //入栈
    public void push(E e) {
        if(isFull()) {
            throw new RuntimeException("myStack  is full ");
        }
        arr[index++]=e;
    }
    //出栈
    public E pop() {
        if(isNull()) {
            throw new RuntimeException("myStack is null ");
        }
        E e=(E)arr[--index];
        return e;
    }
    //访问栈顶元素
    public E peek() {
        return (E)arr[index-1];    
    }
    //栈是否为空
    public boolean isNull() {
        return this.index <= 0;
    }
    //栈是否满了
    public boolean isFull() {
        return index>=maxSize;
    }
    public static void main(String[] args) {
        MyStack<String> myStack=new MyStack(3);
        myStack.push("A0");
        myStack.push("A1");
        myStack.push("A2");
        System.out.println(myStack.peek());
        while(!myStack.isNull()) {
            System.out.println(myStack.pop());
        }
    }
}