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);
	}
}


發佈了117 篇原創文章 · 獲贊 2 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章