数据结构——栈—— 顺序栈(附java实现)

堆栈(英语stack),也可直接称。中国大陆作堆栈,台湾作堆叠,在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英语top)进行加入资料(英语:push)和输出资料(英语:pop)的运算。

由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

堆栈数据结构使用两种基本操作:推入(push)和弹出(pop):

  • 推入:将数据放入堆栈的顶端(阵列形式或串行形式),堆栈顶端top指标加一。
  • 弹出:将顶端数据资料输出(回传),堆栈顶端资料减一。


Java实现:

public class AStack {

	private static final int DEFAULTSIZE = 10;
	private int size;
	private int top;
	private Object[] listArray;
	
	/**
	 * 无参构造方法
	 * */
	public AStack(){
		setup(AStack.DEFAULTSIZE);
	}
	/**
	 * 有参构造方法
	 * */
	public AStack(int size){
		setup(size);
	}
	/**
	 * 初始化方法
	 * */
	private void setup(int size){
		this.size = size;
		this.top = 0;
		this.listArray = new Object[size];
	}
	/**
	 * 清空操作
	 * */
	public void clear(){
		this.top = 0;
	}
	/**
	 * 压栈操作
	 * @throws Exception  
	 * */
	public void push(Object object){
		if(this.top < this.size){
			this.listArray[++top - 1] = object;
		}else{
			System.out.println("Stack overflow!");
		}
	}
	/**
	 * 弹出栈顶元素
	 * @throws Exception 
	 * */
	public Object pop(){
		if(isEmpty()){
			System.out.println("Stack is empty!");
			return null;
		}else{
			top--;
			return this.listArray[top];
		}
	}
	
	public boolean isEmpty(){
		return this.top == 0;
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值