
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
// 创建栈对象
Stack<String> stack = new Stack<>();
// 1. push:压入元素(栈顶)
stack.push("A");
stack.push("B");
stack.push("C");
System.out.println("压入元素后栈:" + stack); // [A, B, C](栈底→栈顶:A→B→C)
// 2. peek:查看栈顶(不删除)
String top = stack.peek();
System.out.println("栈顶元素(peek):" + top); // C,栈仍为 [A, B, C]
// 3. pop:弹出栈顶(删除并返回)
String popped = stack.pop();
System.out.println("弹出的元素(pop):" + popped); // C,栈变为 [A, B]
// 4. empty:判断是否为空
boolean isEmpty = stack.empty();
System.out.println("栈是否为空:" + isEmpty); // false
// 5. search:查找元素位置(栈顶为1)
int pos = stack.search("A");
System.out.println("元素A的位置:" + pos); // 2(栈顶是B,位置1;A在位置2)
// 空栈pop/peek会抛异常,需先判断
stack.pop(); // 弹出B → [A]
stack.pop(); // 弹出A → 空栈
// stack.pop(); // 抛出 EmptyStackException
if (!stack.empty()) {
stack.pop(); // 避免异常
}
}
}