求C++ 表达式求值得程序,最好简单说明数据结构和大致方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C++ 表达式求值得程序,最好简单说明数据结构和大致方法相关的知识,希望对你有一定的参考价值。

参考技术A 将操作数作为二叉树的叶子结点,操作符作为二叉树的非叶子结点
先序遍历则得到前缀式
中序遍历则得到中缀式
后序遍历则得到后缀式
//以(a+b)/c-d+e*f进行演示
+
(-
*)
(/
d)
(e
f)
(+
c)
(a
b)
#include
<stdio.h>
#include
<stdlib.h>
typedef
char
Elem;
typedef
struct
Node

Elem
data;
struct
Node
*pLchild;
struct
Node
*pRchild;
BTreeNode,
*BTree;
BTree
CreateBTree(BTree
T,
Elem
*str)//创建二叉树

static
int
i
=
0;
if
('0'
==
str[i])

T
=
NULL;

else

T
=
(BTree)
malloc
(sizeof(BTreeNode));
T->data
=
str[i++];
T->pLchild
=
CreateBTree(T->pLchild,
str);
i++;
T->pRchild
=
CreateBTree(T->pRchild,
str);

return
T;

void
PostTraverseBTree(BTree
T)//后序

if
(NULL
!=
T)

PostTraverseBTree(T->pLchild);
PostTraverseBTree(T->pRchild);
printf("%c
",
T->data);


void
InTraverseBTree(BTree
T)//中序

if
(NULL
!=
T)

InTraverseBTree(T->pLchild);
printf("%c
",
T->data);
InTraverseBTree(T->pRchild);


void
PreTraverseBTree(BTree
T)//前序

if
(NULL
!=
T)

printf("%c
",
T->data);
PreTraverseBTree(T->pLchild);
PreTraverseBTree(T->pRchild);


int
main(void)

BTree
T
=
NULL;
Elem
str[]
=
"+-/+a00b00c00d00*e00f00";
T
=
CreateBTree(T,
str);
printf("\n\n");
printf("先序遍历(前缀式):\n");
PreTraverseBTree(T);
printf("\n\n");
printf("中序遍历(中缀式):\n");
InTraverseBTree(T);
printf("\n\n");
printf("后序遍历(后缀式):\n");
PostTraverseBTree(T);
printf("\n\n");

以上是关于求C++ 表达式求值得程序,最好简单说明数据结构和大致方法的主要内容,如果未能解决你的问题,请参考以下文章

求C++病毒代码

C++ 中的前缀表达式求值 [CodeEval]

求C++图像处理的程序

求C++中auto型的详细解释

用C++编写程序求100以内的所有素数(质素)的和。

菜鸟求一段简单的C++的GDI+程序代码