Java堆栈算法的实现

Java堆栈算法的实现


/**
 * @Project: struts2
 * @Title: Stack.java
 * @Package com.yza.struct
 * @author yongzhian
 * @date 2014-10-8 下午2:49:10
 * @Copyright: 2014 www.yineng.com.cn Inc. All rights reserved.
 * @version V1.0
 */
package com.yza.struct;

/**
 * @ClassName Stack
 * @Description 堆栈
 * @author yongzhian
 * @Date 2014-10-8
 */
public class Stack {
	int index = -1;
	int size;
	Object[] objArr;
	Object o;
	boolean isEmpty;

	public Stack() {
		this(10);
	}

	public Stack(int size) {
		this.size = size;
		if (size <= 0) {
			System.out.println("堆栈初始化错误!");
		} else {
			this.size = size;
			objArr = new Object[this.size];
		}
	}

	// 添加元素 入栈
	public void push(Object o) {
		if (++index != size) {
			objArr[index] = o;
		} else {// 如果超过了原始堆栈的大小则会将最下面的压出去
			for (int i = 0; i < size - 1; i++) {
				objArr[i] = objArr[i + 1];
			}
			if (index-- == 0) {
				index = 0;
			}
			objArr[index] = objArr;
		}
	}

	// 得到出栈的对象
	public Object pop() {
		if (index != 0) {
			o = objArr[index];
			objArr[index--] = null;
		} else {
			o = objArr[0];
			objArr[0] = null;
		}
		return o;
	}

	public boolean isEmpty() {
		isEmpty = false;
		if (objArr[0] == null)
			isEmpty = true;
		return isEmpty;
	}

	public static void main(String[] args) {
		Stack stack = new Stack();
		System.out.println(stack.objArr[0] + "  " + stack.size);
		stack.push(new Object());
		stack.push(new Object());
		stack.pop();
		System.out.println(stack.objArr[0] + "  " + stack.objArr[1] + "  "
				+ stack.size);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值