数据结构之栈1
利用数组模拟栈
本次利用数组模拟栈
package demo.sjjg.stack;
public class ArrayStackDemo {
public static void main(String[] args) {
ArrayStack arrayStack = new ArrayStack(5);
arrayStack.push(1);
arrayStack.push(2);
arrayStack.push(3);
arrayStack.push(4);
arrayStack.push(5);
arrayStack.push(6);
arrayStack.show();
System.out.println("**********");
for (int i = 0; i < 3; i++) {
System.out.println(arrayStack.pop()+"号客官退房了....");
}
System.out.println("**********");
arrayStack.show();
}
}
class ArrayStack {
private int[] stack;//栈,用数组模拟
private int maxsize;//数组最大长度
private int top = -1;//栈顶,默认为-1
public ArrayStack(int maxsize) {
this.maxsize = maxsize;
stack = new int[this.maxsize];
}
//栈满
public boolean isFull() {
return top == maxsize - 1;
}
//栈空
public boolean isFool() {
return top == -1;
}
//入栈
public void push(int num) {
//判断栈是否已满
if (isFull()) {
System.out.println("客栈满了,客官另寻他处叭");
return;
}
top++;
stack[top] = num;//客官已入栈,好好休息
}
//出栈
public int pop() {
//判断栈是否为空
if (isFool()) {
throw new RuntimeException("掌柜的,客人都退房了,没有客人了");
}
int value = stack[top];
top--;
return value;
}
//遍历
public void show() {
if (isFool()) {
System.out.println("掌柜的,客栈没有客人了");
return;
}
//从栈顶遍历
for (int i = top; i >= 0; i--) {
System.out.printf("stack[%d]=%d\n", i, stack[i]);
}
}
}