1. 程式人生 > 其它 >【課堂回憶筆記】資料結構——棧、佇列、計算表示式

【課堂回憶筆記】資料結構——棧、佇列、計算表示式

介紹棧和佇列的操作、抽象資料型別,以及表示式的計算

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、相同符號中綴比字尾出現的早

演算法思想:

用棧儲存操作符

遇到運算元,直接輸出;

遇到右括號,彈出左右括號內的操作符;

遇到操作符,輸出棧中優先順序更高的操作符,再將操作符壓入棧。