我的c\c++之旅(十)——逆-中序表达式
来源:互联网 发布:js判断是否为身份证号 编辑:程序博客网 时间:2024/06/08 09:18
逆序表达式转换为中序表达式
#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define MAXLENGTH100struct ExpTree;typedef struct ExpTree *BRANCH;struct ExpTree {int element;BRANCH left;BRANCH right;};struct ExpTree *stack[MAXLENGTH];int top = -1;void push(struct ExpTree *tree){if(top < MAXLENGTH - 1)stack[++top] = tree;}struct ExpTree *pop(void){if(top >= 0)return stack[top--];}void Print_Tree(struct ExpTree *tree){if(tree != NULL) {if(tree->element == '+' || tree->element == '-')printf("(");Print_Tree(tree->left);printf("%c", tree->element);Print_Tree(tree->right);if(tree->element == '+' || tree->element == '-')printf(")");}}int main(){int c;struct ExpTree *tree;while((c = getchar()) != EOF && c != '\n') {if(isalnum(c)) {tree = (struct ExpTree *)malloc(sizeof(struct ExpTree));tree->element = c;tree->left = NULL;tree->right = NULL;push(tree);}else if(c != ' ') {tree = (struct ExpTree *)malloc(sizeof(struct ExpTree));tree->element = c;tree->right = pop();tree->left = pop();push(tree);}}Print_Tree(pop());printf("\n");return 0;}
0 0
- 我的c\c++之旅(十)——逆-中序表达式
- 我的c\c++之旅(九)——中-逆序表达式
- 我的C语言之旅——1
- 我的c\c++之旅(八)——Shell排序
- 我的c\c++之旅(三)——堆排序
- 我的c\c++之旅(二)——归并排序
- 我的c\c++之旅(一)——插入排序
- 我的c\c++之旅(十一)——声明器
- 我的c学习:逻辑表达式
- [我眼中的C#]正则表达式
- 我的c语言之旅--209
- 我的c语言之旅--4
- 我的c\c++之旅(四)
- 我的c\c++之旅(五)
- 我的c\c++之旅(六)
- 我的c\c++之旅(七)
- 我的c之路
- c语言中 const 之我的理解
- Canvas1——基础api实验
- 基于Linux的I/O操作
- Canvas2——使用路径
- JSP/Servlet程序设计(入门书籍)
- APIO2016总结
- 我的c\c++之旅(十)——逆-中序表达式
- Java运算符
- JavaWeb初体验
- C#之委托、事件、lambda
- Python发邮件如何设置多人接收
- 开博啦啦啦啦
- javascript自动适应的iframe高度
- Linux入门使用-3
- URAL 2040 Palindromes and Super Abilities 2(回文树)