1. 程式人生 > >資料結構——第二章棧、佇列:01棧

資料結構——第二章棧、佇列:01棧

1.棧和佇列是限定插入和刪除只能在表的端點進行的線性表。棧是後進先出的資料結構,佇列是先進先出的資料結構(棧相當於一個瓶子,向瓶內放的物品被壓到瓶子底部,只有等上面的所有物品都出來了,下面的才能出來,這是先進後出;佇列相當於一個隧道,火車向隧道內開不能回頭,車頭先進去也先出來,這是先進先出)。

2.棧的型別定義:

ADT Stack

{

  資料物件:D = {ai | ai ∈ ElemSet,i = 1, 2, ..., n, n >= 0}

  資料關係:R1 = {<ai-1, ai ∈ D,i=2, ..., n>}(約定an端為棧頂,a1端為棧底)

  基本操作:

  ①InitStack(&S)——初始化棧

  ②Destroy(&S)——銷燬棧

  ③StackLength(S)——求棧中元素個數

  ④StackEmpty(S)——判斷棧是否為空

  ⑤GetTop(S, &e)——返回棧底元素

  ⑥ClearStack(&S)——清空棧

  ⑦Push(&S, e)——進棧

  ⑧Pop(&S, &e)——出棧

  ⑨StackTravers(S, visit())——對棧進行遍歷

} ADT Stack

3.棧的應用舉例:

(1)數制轉換:

(2)括號匹配檢驗:

(3)行編輯程式問題:

(4)表示式求值:

(5)實現遞迴操作:

4.

5.

6.

7.

8.

9.

10.