利用数组简单模拟栈(Stack)

package com.briup.day13.que4;

public class Stack {
	private int[] elementData;
	private int size = 0;//可用元素的数量
	public Stack() {
		this(10);
	}
	public Stack(int capacity) {
		elementData = new int[capacity];
	}
	//弹栈  取数据
	public int pop() {
		if(size<=0) {
			throw new RuntimeException("Stack为空了,不可以弹栈");
		}
		int element = elementData[size];
		elementData[size] = 0;
		size--;
		return element;
	}
	//压栈  存数据
	public void push(int element) {
		ensureCapacity(size+1);
		elementData[size] = element;
		size++;
	}
	private void ensureCapacity(int minCapacity) {
		if(minCapacity > this.elementData.length) {
			//grow
			int newLength = elementData.length + (elementData.length>>1);//1.5倍扩容
			elementData = grow(elementData, newLength);
		}
	}
	private int[] grow(int[] oldArr,int newLength) {
		int[] newArr = new int[newLength];
		for(int i = 0;i<oldArr.length;i++) {
			newArr[i] = oldArr[i];
		}
		return newArr;
	}
	//获取栈的容量
	public int size() {
		return size;
	}
	//展示栈中的数据
	public void show() {
		StringBuilder sb = new StringBuilder("[");
		for(int i = 0;i<size;i++) {
			sb.append(elementData[i]);
			if(i!=size-1) {
				sb.append(",");
			}
		}
		sb.append("]");
		System.out.println(sb.toString());
	}
}

你可能感兴趣的:(JAVA)