C 语言将中缀表达式转换为后缀表达式的程序

2024年8月28日 | 阅读 4 分钟

本文向我们展示了如何在 C 语言中将中缀表达式转换为后缀表达式。每个操作都可以用中缀、前缀或后缀形式表示;我们将研究如何在 C 语言中将中缀表达式转换为后缀表达式。

  • 中缀表达式 - 中缀操作是指任何采用 x 运算符 y 形式的操作,例如 x + y。
  • 后缀表达式 - 操作或表达式也可以表示为 x y 运算符,即 x y +,这等效于中缀表达式中的 x + y。我们所要做的就是将运算符移动到操作数的右侧。

在 C 语言中,有一种将中缀表达式转换为后缀表达式的算法

  1. 应从左到右遍历给定的表达式。
  2. 如果扫描到的字符是操作数,则直接输出。
  3. 否则
    • 如果操作数的优先级高于堆栈中运算符的优先级(或者堆栈为空或包含'('),则将运算符推入堆栈。
    • 否则,弹出任何优先级高于或等于当前扫描运算符的运算符。弹出它们后,将当前扫描的运算符推入堆栈。(如果在弹出过程中遇到括号,则停止并将扫描的运算符推入堆栈。)
  4. 如果扫描到的字符是 '(',则将其推入堆栈。
  5. 如果扫描到的字符是 ')',则弹出堆栈并输出,直到出现另一个 '(',然后消除这两个括号。
  6. 现在应重复步骤 2 到 6,直到扫描完整个中缀表达式,即所有字符。
  7. 打印结果
  8. 弹出并打印,直到堆栈为空。

技术 1:使用基于数组的堆栈将中缀表达式转换为后缀表达式

在此过程中,我们将使用基于数组的堆栈技术。

C 语言代码:中缀表达式转后缀表达式

输出

xyz*+w-

技术 2:使用基于结构体的堆栈将中缀表达式转换为后缀表达式

在此过程中,我们将使用基于结构体的堆栈技术。

C 语言代码:中缀表达式转后缀表达式

输出

xyz*+w-

结论

在本文中,我们讨论了在 C 语言中将中缀表达式转换为后缀表达式的著名主题。我们希望本教程能增进您对堆栈和逻辑构建的理解。许多公司,如 TCS、Wipro、三星、Squad stack 等,在招聘过程中都会询问这些问题。解决这些问题可以提高整体编程能力。