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

二、栈的实现
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());
}
}
}
来源:https://www.cnblogs.com/jalja/p/9052463.html