栈:后入先出的数据结构
栈是java的一种数据结构,栈的底层是通过数组实现的。
它本身是一个java类,这个类里面写了一些入栈,出栈的方法。
public class SqStack {
private Object[] stackElem;//数组就是栈的本质
private int top; //top栈顶,其实就是一个数组下标
public SqStack(int maxSize)
{
stackElem=new Object[maxSize];
top=0;
}
//清空
public void clear()
{
top=0;
}
//是否为空
public boolean isEmpty()
{
return top==0;
}
//元素个数(也就是栈的大小)
public int length()
{
return top;
}
//栈顶
public Object peek()
{
if(!isEmpty())
return stackElem[top-1];
else
return null;
}
//入栈
public void push(Object x) throws Exception
{
if(top==stackElem.length)
{
throw new Exception("栈已满!");
}
else
{
stackElem[top++]=x;
}
}
//出栈
public Object pop() throws Exception
{
if(top==0)
{
throw new Exception("栈为空!");
}
else
return stackElem[--top]; //删除然后返回现在的栈顶
}
//打印(从栈顶到栈底)
public void display()
{
for(int i=length()-1; i>=0; i--)
{
System.out.print(stackElem[i]+" ");
}
System.out.println();
}
栈的一些特点:
1.数组的长度初始化后是不变的。
2.栈是通过top记录下标的方式来控制栈的大小。
3.一旦元素入栈数据就一直存在数组当中,出栈操作仅仅是改变top下标值从而达到控制栈的大小,实际元素并没有从数组中删除掉。
栈的基本使用:
Stack stack=new Stack//初始化
stack.empty()//判断是否为空
stack.peek()//取栈顶值(不出栈)
stack.push(Object);//进栈
stack.pop();//出栈
简单实例:
public class Test {
public static void main(String[] args) {
Stack stack=new Stack();
//1.empty()栈是否为空
System.out.println(stack.empty());
//2.进栈push()
stack.push(new Integer(1));
stack.push("b");
//3.peek()栈顶值
System.out.println(stack.peek());
//4.pop()出栈
stack.pop();
System.out.println(stack.peek());
}
}