Arduino: 中缀转后缀
创始人
2024-09-12 15:36:09
0

下面是一个用Arduino编写的中缀转后缀的示例代码:

#include 

// 定义运算符优先级
int precedence(char op) {
  if (op == '+' || op == '-')
    return 1;
  else if (op == '*' || op == '/')
    return 2;
  else if (op == '^')
    return 3;
  else
    return 0;
}

// 判断字符是运算符还是操作数
bool isOperator(char ch) {
  return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^');
}

// 将中缀表达式转换为后缀表达式
void infixToPostfix(char* infix, char* postfix) {
  StackList stack;
  int i = 0;
  int j = 0;
  while (infix[i] != '\0') {
    if (!isOperator(infix[i])) {
      postfix[j++] = infix[i++];
    } else {
      if (stack.isEmpty() || precedence(infix[i]) > precedence(stack.peek())) {
        stack.push(infix[i++]);
      } else {
        postfix[j++] = stack.pop();
      }
    }
  }
  while (!stack.isEmpty()) {
    postfix[j++] = stack.pop();
  }
  postfix[j] = '\0';
}

void setup() {
  Serial.begin(9600);
  char infix[] = "a+b*c-d/e";
  char postfix[20];

  infixToPostfix(infix, postfix);

  Serial.print("Infix expression: ");
  Serial.println(infix);
  Serial.print("Postfix expression: ");
  Serial.println(postfix);
}

void loop() {}

这个示例代码使用了一个名为StackList的自定义堆栈类。首先定义了precedence函数来确定运算符的优先级,然后定义了isOperator函数来判断字符是运算符还是操作数。

infixToPostfix函数实现了中缀转后缀的算法。它使用一个堆栈来存储运算符,并遍历中缀表达式的每个字符。如果字符是操作数,直接将其添加到后缀表达式中。如果字符是运算符,将其与堆栈顶部的运算符进行比较,如果堆栈为空或者当前运算符的优先级高于堆栈顶部的运算符,则将当前运算符入栈;否则,将堆栈顶部的运算符弹出并添加到后缀表达式中。最后,将堆栈中剩余的运算符依次弹出并添加到后缀表达式中。

setup函数中,我们定义了一个中缀表达式"a+b*c-d/e",然后调用infixToPostfix函数将其转换为后缀表达式,并打印出中缀表达式和后缀表达式。

运行以上代码,你将看到以下输出:

Infix expression: a+b*c-d/e
Postfix expression: abc*+de/-

这说明中缀表达式成功地转换为后缀表达式。

相关内容

热门资讯

透视透视!智星菠萝辅助器,we... 透视透视!智星菠萝辅助器,wepoker游戏下载,插件教程(其实是真的有挂);超受欢迎的智星菠萝辅助...
透视系统!德普之星透视辅助,w... 透视系统!德普之星透视辅助,wpk插件,安装教程(起初真的有挂);是一款可以让一直输的玩家,快速成为...
透视苹果版!aapoker辅助... 透视苹果版!aapoker辅助器怎么用,wepoker透视app下载,透视教程(原生真的是有挂)1、...
透视好友!hhpoker透视脚... 透视好友!hhpoker透视脚本视频,德州辅助工具到底怎么样,必备教程(往昔真的是有挂);(需添加指...
透视存在!wepoker透视脚... 透视存在!wepoker透视脚本免费,pokemmo脚本手机版,透明挂教程(确实是真的有挂);wep...
透视总结!wpk脚本下载,哈糖... 透视总结!wpk脚本下载,哈糖大菠萝能开挂吗,安装教程(起初真的有挂);wpk脚本下载最新版本免费下...
透视最新!德普之星辅助功能如何... 透视最新!德普之星辅助功能如何设置,wpk私人局辅助是真的吗,新版2025教程(本然存在有挂)是由北...
透视好友!智星德州辅助译码插件... 透视好友!智星德州辅助译码插件靠谱吗,大菠萝免费辅助,玩家教你(好像真的是有挂);值得一提的是,智星...
透视挂!aapoker透视脚本... 透视挂!aapoker透视脚本安装包,大菠萝免费辅助,玩家教你(素来存在有挂);最新版2024是一款...
辅助透视!wpk脚本下载,安装... WePoker透视辅助版本解析‌,辅助透视!wpk脚本下载,安装不了wepoker,攻略方法(切实真...