面试时要求用数组模拟栈

问题:面试时要求用数组模拟栈

解决方案:

import java.util.Arrays;

@SuppressWarnings("unchecked")
public class MyStack<E> {
	private E[] arr = (E[]) new Object[5];
	private int index = arr.length - 1;

	// 推入栈
	public void push(E e) {
		index--;
		if (index < 0) {
			int len = arr.length;
			E[] newArr = (E[]) new Object[len * 2];
			System.arraycopy(arr, 0, newArr, len, len);
			arr = Arrays.copyOfRange(newArr, 0, len * 2);
			index = len - 1;
			arr[index] = e;
			return;
		}

		arr[index] = e;
	}

	// 取出栈
	public E pop() {
		System.out.println(arr.length + " = index = " + index);
		if (index > arr.length - 1) {
			return null;
		}
		E e = arr[index];
		index++;
		return e;
	}
}
 

猜你喜欢

转载自wyzws.iteye.com/blog/1739440