package dataStructure_9_Stack; import java.util.ArrayList; import javax.management.RuntimeErrorException; /** * ��һ������ʵ������ջ * ���������ʼλ�ÿ����ǵ�һ��ջ��ջ�ף��������β�������ڶ���ջ��ջ�ף�ѹջʱ��ջ��ָ��ֱ����м��ƶ���ֱ����ջ��ָ�������������ݡ� * @author liuxin * */ public class TwoStackInOneArray { Object[] data = new Object[10]; int i = 0;// ��һ��ջ ��ջ��ָ�� int j = data.length-1;// �ڶ���ջ��ջ��ָ�� public int getSize(){ return data.length; } /** * ���һ��ջ��ѹ��Ԫ�� * @param o */ public void push1(Object o){ ensureCapacity(); System.out.println("i= " + i); data[i++] = o; } /** * �ӵ�һ��ջ�е���Ԫ�� * @return */ public Object pop1(){ if(i ==0 ){ throw new RuntimeException("��һ��ջΪ��"); } return data[i--]; } /** * ��ȡ��һ��ջ��ջ��Ԫ�� * @return */ public Object peek1(){ return data[i]; } /* * ��ڶ���ջѹ��Ԫ�� */ public void push2(Object o){ ensureCapacity(); System.out.println("j==" + j); data[j--] = o; } /**b * �ӵڶ���ջ����Ԫ�� * @return */ public Object pop2(){ return data[j++]; } /** * ��ȡ�ڶ���ջ��ջ��Ԫ�� * @return */ public Object peek2(){ return data[j]; } private void ensureCapacity() { System.out.println("ensureCapacity: " + i + "��" + j); if(i >= j){ data = grow(); j = data.length - j; } } private Object[] grow() { Object[] dataNew = new Object[data.length*2]; System.arraycopy(data, 0, dataNew, 0, i); System.arraycopy(data, i, dataNew, dataNew.length-j, j); return dataNew; } }