為實現相關功能,建立了以下四個標頭檔案
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.運算子沒有優先順序。中綴表...