/**
* Created by bdl19 on 2017/5/6.
*/
public class TwoStackInOneArray {
Object[] data = new Object[10];
private int index1 = 0;
private int index2 = data.length - 1;
private boolean isFull() {
if (index1 == index2) {
return true;
} else return false;
}
private void extendCapacity() {
Object[] temp = new Object[data.length + data.length / 2];
for (int i = 0; i <= index1; i++) {
temp[i] = data[i];
}
int indext = data.length - 1;
for (int i = temp.length - 1; i >= data.length - index2; i--) {
temp[i] = indext;
indext--;
}
index2 = temp.length - (temp.length - index1);
this.data = temp;
}
/**
* 向第一个栈中压入元素
*
* @param o
*/
public void push1(Object o) {
if (this.isFull()) {
extendCapacity();
}
data[index1] = o;
index1++;
}
/**
* 从第一个栈中弹出元素
*
* @return
*/
public Object pop1() {
index1--;
Object o = data[index1];
data[index1] = null;
return o;
}
/**
* 获取第一个栈的栈顶元素
*
* @return
*/
public Object peek1() {
return data[index1 - 1];
}
/*
* 向第二个栈压入元素
*/
public void push2(Object o) {
if (this.isFull()) {
extendCapacity();
}
data[index2] = o;
index2--;
}
/**
* 从第二个栈弹出元素
*
* @return
*/
public Object pop2() {
Object o = data[++index2];
data[index2] = null;
return o;
}
/**
* 获取第二个栈的栈顶元素
*
* @return
*/
public Object peek2() {
return data[index2 + 1];
}
}