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