简介

永远是对栈顶元素操作,自上而下,栈的下表是从1开始的
Stack 栈容器,是 Vector 的一个子类,它实现了一个标准的后进先出(LIFO:Last In Frist Out) 的栈。
特点:后进先出。它通过 5 个操作方法对 Vector 进行扩展,允许将向量视为堆栈。
image.png

Stack使用

  1. import java.util.Stack;
  2. public class StackTest {
  3. public static void main(String[] args) {
  4. Stack<String> stack = new Stack<>(); //给出了栈的元素类型
  5. stack.push("a");
  6. stack.push("b");
  7. stack.push("c");
  8. String str1=stack.peek(); //查看栈顶元素并返回其值,但不删除它
  9. System.out.println(str1);
  10. boolean str2=stack.empty(); //栈的判空操作
  11. System.out.println(str2);
  12. int str3=stack.search("a");
  13. System.out.println(str3); //查找指定元素在栈的位置,自顶向下
  14. String str4= stack.pop(); //弹栈操作,取出栈顶元素并删除它
  15. System.out.println(str4);
  16. String str5=stack.pop();
  17. System.out.println(str5);
  18. }
  19. }

stack使用案例

  1. import java.util.Stack;
  2. public class StackTest2 {
  3. public static void main(String[] args) {
  4. StackTest2 stackTest2=new StackTest2();
  5. stackTest2.symmetry();
  6. }
  7. public void symmetry(){
  8. String str="...{.....[....(....)...]....}..(....)..[...]...[";
  9. Stack<String> stack =new Stack<>();
  10. boolean flag=true;//哨兵参数,假设是匹配的
  11. for(int i=0;i<str.length();i++){
  12. char c=str.charAt(i); //charat()方法获取字符串元素,返回为字符类型
  13. if(c=='{'){
  14. stack.push("}");
  15. }
  16. if(c=='['){
  17. stack.push("]");
  18. }
  19. if(c=='('){
  20. stack.push(")");
  21. }
  22. if(c=='}'||c==']'||c==')'){
  23. if(stack.empty()){
  24. flag=false;
  25. break;
  26. }
  27. String x=stack.pop();
  28. if(x.charAt(0)!=c){
  29. flag=false;
  30. break;
  31. }
  32. }
  33. }
  34. if(!stack.empty()){ //非空说明没有对称的另一半
  35. flag=false;
  36. }
  37. System.out.println(flag);
  38. }
  39. }