public class StackByArray {
int stackSize = 100;
int[] stactTopOfStack = {-1,-1,-1};
int[] theArray = new int[stackSize*3];
void push(int stackNum,int x){
if (stactTopOfStack[stackNum]+1>stackSize){
return;
}
stactTopOfStack[stackNum]++;
theArray[topOfStack(stackNum)]=x;
}
int pop(int stackNum) throws Exception{
if (stactTopOfStack[stackNum]==-1){
throw new Exception("栈是空的,无法出栈");
}
int value = theArray[topOfStack(stackNum)];
theArray[topOfStack(stackNum)] = 0;
stactTopOfStack[stackNum]--;
return value;
}
int top(int stackNum) throws Exception{
if (stactTopOfStack[stackNum]==-1){
throw new Exception("栈是空的,无法获得栈顶元素");
}
return theArray[topOfStack(stackNum)];
}
int topOfStack(int stackNum){
return stackSize * stackNum + stactTopOfStack[stackNum];
}
public static void main(String[] args) {
StackByArray stack = new StackByArray();
stack.push(0, 1);
stack.push(0, 2);
stack.push(1, 3);
stack.push(1, 4);
stack.push(2, 5);
stack.push(2, 6);
try {
System.out.println(stack.pop(0));
System.out.println(stack.top(0));
System.out.println(stack.pop(0));
System.out.println(stack.pop(0));
} catch (Exception e) {
e.printStackTrace();
}
}
}