关于java中stack(栈)的使用代码实例,我将为您提供一份完整攻略。
栈的定义和特性
栈(stack)是一种容器,可存储一组元素,具有后进先出(LIFO,Last In First Out)的特性,只能在容器的一端进行插入和删除操作。
在Java中,使用java.util.Stack
类实现栈的操作。
栈的基本操作
以下是栈的基本操作:
1. 创建栈
Stack<Integer> stack = new Stack<Integer>();
创建一个空栈。
2. 入栈
stack.push(1);
入栈,将元素1插入栈中。
3. 出栈
int a = stack.pop();
出栈,将栈顶元素移除,并返回该元素。
4. 查看栈顶元素
int a = stack.peek();
查看栈顶元素,返回栈顶元素但不移除该元素。
5. 判断栈是否为空
boolean b = stack.isEmpty();
判断栈是否为空。
示例一:使用栈实现括号匹配
栈可以用于解决一些常见的问题,例如:括号匹配问题。下面是一个使用栈实现括号匹配的示例代码:
public static boolean isValidParentheses(String s) {
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if (c == ')' && !stack.isEmpty() && stack.peek() == '('){
stack.pop();
} else if (c == ']' && !stack.isEmpty() && stack.peek() == '['){
stack.pop();
} else if (c == '}' && !stack.isEmpty() && stack.peek() == '{'){
stack.pop();
} else {
return false;
}
}
return stack.isEmpty();
}
在该示例中,通过栈的后进先出特性,将左括号压入栈中,遇到右括号时,弹出栈顶左括号进行匹配判断。
示例二:使用栈实现逆波兰表达式
逆波兰表达式就是将运算符写在操作数之后的一种表达式,例如:2 3 +,表示2加3的和。它可以用栈来实现计算。下面是一个使用栈实现逆波兰表达式的示例代码:
public static int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<Integer>();
for (String token : tokens) {
if (token.equals("+")) {
int b = stack.pop();
int a = stack.pop();
stack.push(a + b);
} else if (token.equals("-")) {
int b = stack.pop();
int a = stack.pop();
stack.push(a - b);
} else if (token.equals("*")) {
int b = stack.pop();
int a = stack.pop();
stack.push(a * b);
} else if (token.equals("/")) {
int b = stack.pop();
int a = stack.pop();
stack.push(a / b);
} else {
stack.push(Integer.parseInt(token));
}
}
return stack.pop();
}
在该示例中,将操作数压入栈中,遇到运算符时,弹出栈顶两个操作数进行相应计算,并将计算结果压入栈中。
以上就是关于java中stack(栈)的使用代码实例的详细讲解,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中stack(栈)的使用代码实例 - Python技术站