简介
永远是对栈顶元素操作,自上而下,栈的下表是从1开始的
Stack 栈容器,是 Vector 的一个子类,它实现了一个标准的后进先出(LIFO:Last In Frist Out) 的栈。
特点:后进先出。它通过 5 个操作方法对 Vector 进行扩展,允许将向量视为堆栈。
Stack使用
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<String> stack = new Stack<>(); //给出了栈的元素类型
stack.push("a");
stack.push("b");
stack.push("c");
String str1=stack.peek(); //查看栈顶元素并返回其值,但不删除它
System.out.println(str1);
boolean str2=stack.empty(); //栈的判空操作
System.out.println(str2);
int str3=stack.search("a");
System.out.println(str3); //查找指定元素在栈的位置,自顶向下
String str4= stack.pop(); //弹栈操作,取出栈顶元素并删除它
System.out.println(str4);
String str5=stack.pop();
System.out.println(str5);
}
}
stack使用案例
import java.util.Stack;
public class StackTest2 {
public static void main(String[] args) {
StackTest2 stackTest2=new StackTest2();
stackTest2.symmetry();
}
public void symmetry(){
String str="...{.....[....(....)...]....}..(....)..[...]...[";
Stack<String> stack =new Stack<>();
boolean flag=true;//哨兵参数,假设是匹配的
for(int i=0;i<str.length();i++){
char c=str.charAt(i); //charat()方法获取字符串元素,返回为字符类型
if(c=='{'){
stack.push("}");
}
if(c=='['){
stack.push("]");
}
if(c=='('){
stack.push(")");
}
if(c=='}'||c==']'||c==')'){
if(stack.empty()){
flag=false;
break;
}
String x=stack.pop();
if(x.charAt(0)!=c){
flag=false;
break;
}
}
}
if(!stack.empty()){ //非空说明没有对称的另一半
flag=false;
}
System.out.println(flag);
}
}