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

原理来自百度百科

1、栈的定义

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

                                                                 

     

2、栈的实现

 

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());
        }
    }
}
相关文章
相关标签/搜索