資料結構實驗6

2021-10-02 04:29:44 字數 2671 閱讀 4933

因為精度問題,請使用double存資料。

要求建立棧類,採用陣列描述;

計算數學表示式的值。 輸入數學表示式,輸出表示式的計算結果。數學表示式由單個數字和運算子+、-、、/、(、)構成,例如 2+3(4+5)–6/4。假定表示式輸入格式合法。

格式輸入

第一行乙個整數n(1<=n<=100),代表表示式的個數。

接下來n行,每行乙個表示式,保證表示式內的數字為單個整數,表示式內各運算子和數字間沒有空格,且表示式的長度不超過2000。

輸出每行表示式輸出乙個浮點數,要求保留兩位小數,保證輸入表示式合法。

樣例輸入

31+6/17+214+9/1+209+9+7/(95)-16-08-7-92+6-(0-5-28-7-95(6-5526-2-7-5+67+69-100+30+2/1-6/6+5))

0-4-1/6*(1-(6/7)-4+6+2+61)-17+2-82+0-(4+6-61+(3-86/4-6-5)6/4/8+7-14/95)-0/6+1-0-2+7-2+64-36+2/8+6+162

5-39+5/15-9+18-6-8-41+5-2+9/32-2/5/(2-6)2/7-90-2+4/6678-8-86+89*(3+01/5/278+0-88-5+8/5*2-0)

輸出-9197.84

-3.47

-4362.57

限制1s, 65536kib for each test case.

#include

#include

#include

#include

using

namespace std;

//定義乙個陣列棧

template

<

class

t>

class

arraystack

//析構函式

bool

empty()

const

intsize()

const

t&top(

)void

pop(

)void

push

(const t& theelement)

;private

:int stacktop;

int stacklength;

t *stack;};

//建構函式

template

<

class

t>

arraystack

::arraystack

(int initialcapacity)

template

<

class

t>

void arraystack

::push

(const t& theelement)

delete stack;

stack=newstack;

} stack[

++stacktop]

=theelement;

}void

calculate

(arraystack<

double

>

&n, arraystack<

char

>

&c) c.

pop();

//將運算完的符號彈出棧

}void

operate

(string s,

int length)

if(flag)

n.push

(k);

}else

switch

(s[i]

)break

;case

'*':

case

'/':

if(c.

empty()

||c.

top()==

'(') c.

push

(s[i]);

else

if(c.

top()==

'+'||c.

top()==

'-') c.

push

(s[i]);

else

if(c.

top()==

'*'||c.

top()==

'/')

break

;case

'(':

//左括號直接入棧

c.push

(s[i]);

break

;case

')':

//遇到右括號 ,對括號內運算直至運算到左括號

while

(c.top()

!='('

) c.

pop();

//將左括號彈出棧

break

;default

:break;}

}}while

(!c.

empty()

)calculate

(n,c)

; cout<<

setprecision(2

)

)<}int

main()

return0;

}

資料結構實驗(6)

ps 僅資料結構實驗記錄 題目 某汽車輪渡口,過江渡船每次能載 10 輛車過江。過江車輛分別為客車類和貨車類,上船有如下規定 同類車先到先上船,客車先於貨車上渡船,且每上 4 輛客 車,才允許上一輛貨車 若等待客車不足 4 輛則以貨車代替 若無貨車等待則允許客 車都上船。設計乙個演算法模擬渡口管理。...

資料結構實驗6

題目 某汽車輪渡口,過江渡船每次能載 10 輛車過江。過江車輛分別為客車類和 貨車類,上船有如下規定 同類車先到先上船,客車先於貨車上渡船,且每上 4 輛客 車,才允許上一輛貨車 若等待客車不足 4 輛則以貨車代替 若無貨車等待則允許客 車都上船。設計乙個演算法模擬渡口管理。test.h inclu...

資料結構實驗6 樹

編寫演算法函式void levelorder tree t 實現樹的層次遍歷。include tree.h void levelorder tree t t為指向樹根結點的指標 int main 假設樹採用指標方式的孩子表示法表示,試編寫乙個非遞迴函式void preorder1 tree root...