栈的相关代码:
package stack;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Stack {
private int size;
private String[] stack;
private int maxSize = 5;
Scanner shuru = new Scanner(System.in);
//初始化栈
public Stack() {
stack = new String[maxSize];
size = 0;
}
//判断栈是否为空
private boolean isEmpty() {
return size == 0;
}
//判断栈是否为满
private boolean isFull() {
return size == maxSize;
}
//查看栈顶
public void lookStack() {
if (isEmpty() == false) {
System.out.println(stack[size - 1]);
}else{
System.out.println("*******栈为空*******");
}
}
//弹出栈顶并返回值
public void pop() {
if (isEmpty() == true) {
System.out.println("*******栈为空,无法弹出*******");
} else {
String first = stack[size - 1];
size--;
stack[size] = null;
System.out.println(first);
}
}
//压入栈
public void push(String newData) {
if (isFull() == true) {
System.out.println("栈已满,是否增加栈容量(输入1为是,0为否)\n*******请输入:*******");
int yorn = shuru.nextInt();
if (yorn == 0) {
System.out.println("*******栈已满,无法压入*******");
} else {
addCapacity(size);
System.out.println("**增加容量成功------压入成功**");
size++;
stack[size - 1] = newData;
}
} else {
size++;
stack[size - 1] = newData;
System.out.println("*******压入成功********");
}
}
//扩充栈容量
private void addCapacity(int size) {
size = 2 * size;
stack = Arrays.copyOf(stack, size);
}
}
测试:
package stack;
public class Test {
public static void main(String[] args) {
Stack test1 = new Stack();
test1.pop();
test1.lookStack();
test1.push("公交车");
test1.lookStack();
test1.push("小轿车");
test1.lookStack();
test1.push("自行车");
test1.lookStack();
test1.pop();
test1.lookStack();
test1.push("自行车");
test1.push("自行车");
test1.push("自行车");
test1.push("自行车");
}
}
结果: