佇列與棧 知識點 面試考點

2021-10-06 00:04:59 字數 2113 閱讀 9750

先進先出、一種操作受限的線性表資料結構、支援隊尾插入元素,在隊頭刪除元素。

佇列的應用也非常廣泛如:迴圈佇列、阻塞佇列、併發佇列、優先順序佇列等。

假越界只能使用一次

棧(stack)又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。後進先出

中綴表示式就是常見的運算表示式,如(3+4)×5-6

中綴表示式的求值是我們人最熟悉的,但是對計算機來說卻不好操作(下面的案例就能看的這個問題),因此,在計算結果時,往往會將中綴表示式轉成其它表示式來操作(一般轉成字尾表示式.)

3、當表示式遍歷完,順序的從數棧和符號棧pop出相應的數字和符號,進行運算

4、最後在數棧中只有乙個數字,就是表示式的結果。

2.2.2.1、遺留問題: 上述**只處理個數,如果數字是多位數將不能處理

3*40

*5+3

-4/2

=1

使用乙個標記,標記前乙個字元是否是數字。

字首表示式又稱波蘭式,字首表示式的運算子位於運算元之前

舉例說明:(3+4)×5-6對應的字首表示式就是- × + 3 4 5 6

重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果

例如:(3+4)×5-6對應的字首表示式就是- × + 3 4 5 6, 針對字首表示式求值步驟如下:

從右至左掃瞄,將6、5、4、3壓入堆疊

遇到+運算子,因此彈出3和4(3為棧頂元素,4為次頂元素),計算出3+4的值,得7,再將7入棧

接下來是×運算子,因此彈出7和5,計算出7×5=35,將35入棧

最後是-運算子,計算出35-6的值,即29,由此得出最終結果

字尾表示式又稱逆波蘭表示式,與字首表示式相似,只是運算子位於運算元之後

中舉例說明:(3+4)×5-6對應的字尾表示式就是3 4 + 5 × 6 –

再比如:

重複上述過程直到表示式最右端,最後運算得出的值即為表示式的結果

例如: (3+4)×5-6 對應的字尾表示式就是3 4 + 5 × 6 -, 針對字尾表示式求值步驟如下:

字尾表示式適合計算機進行運算,但是人卻不太容易寫出來,尤其是表示式很長的情況下,因此在開發中,我們需要將 中綴表示式轉成字尾表示式

具體步驟如下:

5、遇到括號時:

6、重複步驟2至5,直到表示式的最右邊

7、將s1中剩餘的運算子依次彈出並壓入s2

8、依次彈出s2中的元素並輸出,結果的逆序即為中綴表示式對應的字尾表示式

舉例說明:

將中綴表示式「1+((2+3)×4)-5」轉換為字尾表示式的過程如下:

結果為 「1 2 3 + 4 × + 5 –」

棧與佇列知識點

一 讀取 include include 棧的標頭檔案 using namespace std intmain 輸入 123 輸出 123 二 刪除 include include 棧的標頭檔案 using namespace std intmain 輸入 123 456 輸出 123 三 判斷棧的...

棧和佇列 知識點

在c 標準庫 stl 中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。1 棧 stack 說明及舉例 使用棧,要先包含標頭檔案 include 定義棧,以如下形式實現 stacks 其中type為資料型別 如 int,float,char等 棧的主要操作 s.push item 將i...

棧與佇列的基礎知識點

棧 棧 stack 又名堆疊,它是一種特殊的線性表。元素之間成線性結構。在c 中其標頭檔案為 特性 運算受限制,只允許在棧頂進行插入刪除操作,插入叫做進棧,入棧或者壓棧 push 刪除叫做出棧 pop 由於有這種特性,所以著名特點是後進先出。定義 stacks 現在展示一道題進行講解吧,話不多說請看...