資料結構 利用棧實現運算優先順序表示式求值 究極全面

2022-08-27 13:48:09 字數 2563 閱讀 7264

入棧:"

<< e <

}t pop()

t gettop()

};//

bool isnumber(char x) ;

//for (int i = 0; i <= 9; i++) //}

//return false;//}

bool isnumber(char

x)

else

return

false;}

char precede(char a,char

b)

else

if (a == '

*' || a == '/'

)

else

if (a == '('

)

else

if (a == ')'

)

else

if (a == '.'

)

else

}double operate(double a,char s,double

b)

else

if (s == '-'

)

else

if (s == '*'

)

else

if (s == '/'

)

else

return a / b*1.0

; }

else

if (s == '.'

)

else

while(x>=1

)

return a +x;

}}double

run()

//cout << "是否數字" << isnumber(c) << endl;

//cout << c/

double x;

//x=c-'0';

//cout << x << endl;

//c = getchar();

//cout << "number:" << opnd.gettop() << endl;

//cout << "number:" << opter.gettop() << endl;

}

if(t)

switch

(precede(opter.gettop(), c))

c =getchar();

if (a == 0 && !isnumber(c) && c != '

(' && c!= '#'

)

//cout << "小於:" << opnd.gettop() << endl;

break

;

case'=

':cout

<< "

運算子:

"<< c << "等於"

<< opter.gettop() <

opter.pop();

if (c == ')'

) c =getchar();

if (b == 0 && !isnumber(c) && c != '

(' && c != '#'

)

//cout << "等於:" << opnd.gettop();

break

;

case

'>':

cout

<< "

運算子:

"<< c << "大於"

<< opter.gettop() <

double a, b; char

theta;

theta =opter.pop();

a =opnd.pop();

b =opnd.pop();

opnd.push(operate(b, theta, a));

break

; }

//. 應該小於#

}

return

opnd.gettop();

}int

main()

此程式包含小數運算(.運算的實現) 以及格式是否正確  比較全面

資料結構 優先順序佇列

設初始序列為 49,38,65,97,76 大根堆 父節點的值大於或等於子節點的值 令數值越大優先順序越高 此時堆頂的元素為所有元素的最大值 97 小根堆 父節點的值小於或等於子節點的值 令數值越小優先順序越高 此時堆頂的元素為所有元素的最小值 38 將佇列中的所有元素按從大到小的數值輸出 分析 因...

資料結構 優先順序佇列

優先佇列的底層實現 二叉堆實現優先順序佇列 練習優先順序佇列也屬於佇列,因此也提供以下介面 利用二叉堆作為優先佇列的底層實現 可以通過comparator或comparable去自定義優先順序高低 利用二叉堆實現優先順序佇列。二叉堆實現優先順序佇列 author yusael public clas...

資料結構 優先順序佇列(堆)

一 堆 0 預備知識 使用陣列儲存二叉樹結構,方式即將二叉樹用層序遍歷方式放入陣列中。這種方式的主要用法就是堆的表示。在陣列中 左孩子 left 下標 2 parent 1 右孩子 right 下標 2 parent 2 雙親 parent 下標 child 1 2 1 堆的概念 堆在邏輯上是乙個完...