C 表示式樹與求值

2021-09-29 22:36:50 字數 3080 閱讀 9510

為實現相關功能,建立了以下四個標頭檔案

1.建立二叉樹的標頭檔案(bitree.h)

#pragma once

#include

#include

"bitree.h"

using

namespace std;

typedef

struct bitnode//二叉樹的結構體

bitnode,

*bitree;

bitree createexptree

(bitree &t, bitree a, bitree b,

char ch)

//以a,b為左右孩子建立二叉樹

bitree createexptree_number

(bitree &t, bitree a, bitree b, string ch)

//以a,b為左右孩子建立二叉樹

2 .遍歷二叉樹的標頭檔案(trversebitree.h)

#pragma once

#include

"iostream"

#include

"bitree.h"

using

namespace std;

void

preprintbitree

(bitree t)

//先序列印樹

}void

inorderprintbitree

(bitree t)

//中序列印樹

}void

postprintbitree

(bitree t)

//後序列印樹

}

3.expt棧的標頭檔案(exptstack.h)

#pragma once

#include

"iostream"

#include

"bitree.h"

using

namespace std;

#define maxstacksize 100

#define error 0

#define ok 1

typedef

struct stack1//棧的結構體

stack1;

//初始化棧,返回狀態碼

intinitstack1

(stack1 &s)

//入棧,返回的是狀態碼

intpush1

(stack1 &s, bitree e)

//出棧,返回的是狀態碼,彈出元素e

intpop1

(stack1 &s, bitree &e)

//取棧頂元素,返回棧頂元素

bitree gettop1

(stack1 s)

4.optr棧標頭檔案(optrstack.h)

#include

"iostream"

#include

"bitree.h"

using

namespace std;

#define maxstacksize 100

#define error 0

#define ok 1

typedef

struct stack//棧的結構體

stack;

//初始化棧,返回狀態碼

intinitstack

(stack &s)

//入棧,返回的是狀態碼

intpush

(stack &s,

char e)

//出棧,返回的是狀態碼,彈出元素e

intpop

(stack &s,

char

&e)//取棧頂元素,返回棧頂元素

char

gettop

(stack s)

//列印optr棧

void

printoptr

(stack s)

}

5.cpp主程式

#include

"iostream"

#include

"optrstack.h"

#include

"exptstack.h"

#include

"bitree.h"

#include

"trversebitree.h"

using

namespace std;

//precede函式用來判斷優先順序

char

precede

(char x,

char y)

case

'+':

case

'-':

case

'*':

case

'/':

case

'(':

case

')':}}

//判斷是否是符號,是返回1,不是返回0

intin

(char ch)

void

initexptree

(bitree &t,stack &optr,stack1 &expt)

else}}

}int

getvalue

(char op,

int b,

int c)

//獲得表示式b op c的值

}int

evaluateexptree

(bitree t)

else

}int

main()

6.執行結果如圖所示

表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...

C 表示式求值

1 問題描述 輸入為四則運算表示式如 2 3 5 7 9 3,僅由 構成,沒有空格,要求其值。2 問題分析 有兩種方法,一是用遞迴,將表示式分解為項和因子,再通過遞迴逐塊解決。其中,我們需要清楚的是,表示式為項的加減,項為因子的乘除,因子為數值或帶括號的表示式。第二種方法是通過堆疊,先將表示式轉化成...

表示式求值與字尾表示式

乙個算術表示式,含有數字 為簡化處理,數字只有一位 運算子 以及括號,求表示式的值。給出的表示式是一般我們見到的中綴表示式,即運算子位於運算元之間。如果把中綴表示式轉化為字尾表示式,那麼對字尾表示式求值將會很方便。字尾表示式特點 1.操作符位於運算元之後 2.沒有括號 3.運算子沒有優先順序。中綴表...