首页 > 代码库 > Java数据结构系列之——栈(1):栈的顺序存储结构及操作

Java数据结构系列之——栈(1):栈的顺序存储结构及操作

package Stack;
/**
 * 栈的定义:限定只在表末尾进行增加和删除操作的线性表
 * 栈的特点:先进后出FILO(First In Last Out)
 * 		  通常我们把允许插入和删除的一段称为栈顶(top),另一端
 *       称为栈底,不包含任何元素的栈称为空栈
 * 栈的出栈操作我们一般称为进栈或者压栈或者入栈
 * 栈的删除操作我们一般称为出栈或者弹栈
 * 
 * 这里我们用数组来实现栈的顺序存储结构及各种操作
 * @author wl
 *
 */
public class MyStack {
	private int[] array;//用来存放栈的元素
	private int top;//栈顶指针
	
	/**
	 * 默认构造函数,用于初始化栈,这里我们
	 * 将栈的大小默认初始化为10
	 */
	public MyStack(){
		array=new int[10];
		top=-1;
	}
	
	/**
	 * 自定义构造函数,可以用于指定栈的初始化
	 * 空间大小
	 */
	public MyStack(int capacity){
		array=new int[capacity];
		top=-1;
	}
	
	/*
	 * 压栈操作
	 */
	public void push(int value){
		if(isFull()){//栈满
			throw new RuntimeException("栈已满,元素'"+value+"'压栈不成功");
		}
		array[++top]=value;
	}
	
	public int peek(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top];
	}
	/**
	 * 出栈操作
	 * @return
	 */
	public int pop(){
		if(isEmpty()){//如果栈为空
			throw new RuntimeException("栈中元素为空");
		}
		return array[top--];
	}
	
	/**
	 * 判断栈是否为空
	 * @return
	 */
	public boolean isEmpty(){
		return top==-1;
	}
	/**
	 * 判断栈是否满了
	 */
	public boolean isFull(){
		return top==array.length-1;
	}
}

Java数据结构系列之——栈(1):栈的顺序存储结构及操作