java用链表写一个计算器
时间: 2023-06-01 12:07:00 浏览: 90
好的,我来回答你的问题。下面是一个Java实现的链表计算器的示例代码:
```
import java.util.LinkedList;
public class Calculator {
public static void main(String[] args) {
String s = "3+2*2"; // 需要计算的表达式
int result = calculate(s);
System.out.println(result); // 输出计算结果
}
public static int calculate(String s) {
LinkedList<Integer> stack = new LinkedList<Integer>();
char preSign = '+';
int num = 0;
int n = s.length();
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (Character.isDigit(c)) {
num = num * 10 + (c - '0');
}
if (!Character.isDigit(c) && c != ' ' || i == n - 1) {
switch (preSign) {
case '+':
stack.push(num);
break;
case '-':
stack.push(-num);
break;
case '*':
stack.push(stack.pop() * num);
break;
case '/':
stack.push(stack.pop() / num);
break;
}
preSign = c;
num = 0;
}
}
int res = 0;
while (!stack.isEmpty()) {
res += stack.pop();
}
return res;
}
}
```
这个计算器实现了加、减、乘、除四种基本运算,并且支持多位数和空格。该计算器使用一个栈来保存数字和符号,遇到运算符时根据前一个运算符的优先级进行运算,最后再将栈中剩余的所有数字相加。
希望这个例子可以帮助你理解如何使用链表来实现一个简单的计算器。
阅读全文