栈是基本的数据结构,它遵循后进先出原则(LIFO,即Last In Frist Out),一次只许访问一个元素,即栈顶的元素。在实现生活中,就像一串糖葫芦,只能吃最上面的糖葫芦,吃完第一个后,才能吃第二个。同时,插葫芦也只能从上往下,一个个的插。
在JDK中,util包中有一个用Vector实现的栈,这里我们用数组实现一个简单的栈。它应该包括入栈、出栈、判空、判满、查看栈顶元素等方法,其代码如下:
public class Stack
{
//数据项、大小、栈顶标志
private Object[] items;
private int size;
private int top;
public Stack(int size)
{
items = new Object[size];
this.size = size;
top = 0;
}
//判满
public boolean isFull()
{
return top == size;
}
//判空
public boolean isEmpty()
{
return top == 0;
}
//查看栈顶元素
public Object peek()
{
if(!isEmpty()){
return items[top-1];
}
else
throw new IndexOutOfBoundsException("the stack is empty");
}
//入栈
public void push(Object item)
{
if(!isFull())
items[top++] = item;
else
throw new IndexOutOfBoundsException("the stack is full");
}
//出栈
public Object pop()
{
if(!isEmpty()){
return items[--top];
}
else
throw new IndexOutOfBoundsException("the sta