【課堂回憶筆記】資料結構——棧、佇列、計算表示式
阿新 • • 發佈:2021-11-13
介紹棧和佇列的操作、抽象資料型別,以及表示式的計算
0、摘要
介紹棧和佇列的操作、抽象資料型別,以及表示式的計算
1、棧
LIFO (last in first out)
支援操作:入棧(push)和出棧(pop),訪問棧頂元素(top)
抽象資料型別:
自行實現(考試不要求)
例子:老鼠走迷宮
2、佇列
FIFO (first in first out)
操作:入隊(enQueue)、出隊(deQueue)、訪問隊首(front)、訪問隊尾(rear)
抽象資料型別:
private:
T* queue;
int front, rear;
int capcity;
自行實現(考試不要求)
例子:晶片設計
3、表示式計算
表示式(expression):由運算元(operand)、操作符(operator)、括號(delimiter)組成
字首(prefix) :操作符出現在兩個運算元前面
中綴(infix) :操作符出現在兩個運算元中間
字尾(postfix):操作符出現在兩個運算元後面
例子: a / b + c * d + e
中綴:a / b + c * d + e
字尾:a b / c d * + e +
字尾表示式的計算:利用棧
表示式的計算:將表示式轉換為字尾表示式,再計算
注意:中綴和字尾的結構:
1、運算元的順序相同
2、相同符號中綴比字尾出現的早
演算法思想:
用棧儲存操作符
遇到運算元,直接輸出;
遇到右括號,彈出左右括號內的操作符;
遇到操作符,輸出棧中優先順序更高的操作符,再將操作符壓入棧。