入棧:"
<< 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 堆的概念 堆在邏輯上是乙個完...