(数据结构)从中缀向后缀转换表达式:
问题描述
中缀表达式就是我们通常所书写的数学表达式,后缀表达式也称为逆波兰表达式,在编译程序对我们书写的程序中的表达式进行语法检查时,往往就可以通过逆波兰表达式进行。我们所要设计并实现的程序就是将中缀表示的算术表达式转换成后缀表示,例如,将中缀表达式
(A 一 (BC 十 D)E) / (F 十 G )
转换为后缀表示为:
ABCD十E–FG十/
注意:为了简化编程实现,假定变量名均为单个字母,运算符只有+,-,*,/ 和^(指数运算),可以处理圆括号(),并假定输入的算术表达式正确。
要求:使用栈数据结构实现 ,输入的中缀表达式以#号结束
输入
整数N。表示下面有N个中缀表达式
N个由单个字母和运算符构成的表达式
输出
N个后缀表达式。
| 测试输入 | 期待输出 |
|---|---|
| 1↵ (A-(B*C+D)*E)/(F+G)#↵ | ABCD+E-FG+/↵ |
| 2↵ a+bc-d#↵ a-b(c+d)#↵ | abc*+d-↵ abcd+*-↵ |
代码如下:
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
typedef struct Node
{
char symbol;
struct Node *next;
}NODE;
NODE *head,*p;
void InitStack()
{
head = (NODE*)malloc(sizeof(NODE));
head->symbol = NULL;
head->next = NULL;
}
void Push(char ch)
{
p=(NODE*)malloc(sizeof(NODE));
p->symbol = ch;
p->next

本文介绍如何使用栈数据结构将中缀表达式转换为后缀表达式。示例将中缀表达式(A - (BC + D)*E) / (F + G)转换为后缀表达式ABCD+*E-FG+/,并提供了一个简化版的编程实现,假设输入的表达式正确,运算符包括+,-,*,/,^以及括号,并以#号结束。"
125026901,8204070,Android 回音消除实践:AudioManager与AcousticEchoCanceler,"['Android开发', '音频处理', '回音消除', '录音功能', 'API应用']
最低0.47元/天 解锁文章
367

被折叠的 条评论
为什么被折叠?



