資料結構基礎第3講 棧及其應用
內容
考點一:棧的概念
1.順序棧的定義:
-
出棧順序情況計算
給定n個元素,出棧順序的情形滿足卡特蘭數,計算公式:
\[\frac{C_{2n}^{n}}{n+1} \]例題:
確定第一個出棧的誰。有兩種可能:
找帶頭大哥。
-
棧的順序儲存結構
順序棧操作
順序棧4要素
-
棧空條件: top = -1
-
棧滿條件: top = StackSzie - 1
-
進棧操作:top++;將e放在top處
-
退棧操作: 從top處取出元素e; top--;
-
-
棧的臨界條件
-
初始化時,top = bottom = -1
-
入棧:
s -> top++; //棧頂指標+1 s -> data[s -> top] = a; // 元素a放在棧頂指標處
top始終指向棧頂元素
bottom指向-1
-
出棧
x = s -> data[s -> top]; s -> top--; // 棧頂指標-1
棧中元素個數top+1個
當top+1 >= n時棧滿
-
(考試預設情況)初始化時,top = bottom = 0
-
進棧
s -> data[s -> top] = a; // 元素a放在棧頂指標處 s -> top++; // 棧頂指標+1
top指向棧頂元素的下一個空位置
bottom指向0
-
出棧
s -> data[s -> top]; // 棧頂指標-1 x = s -> data[s -> top]
棧中元素個數top個
top >= n時棧滿
-
初始化時, top = bottom = n
-
入棧
s -> top--; // 棧頂指標-1 s -> data[s -> top] = a; // 元素a放在棧頂指標處
top始終指向棧頂元素
bottom始終指向n
-
出棧
x = s -> data[s -> top]; s -> top++; // 棧頂指標+1
元素個數n-top個
當n - top >= n
時棧滿
-
初始化時, top = bottom = n - 1
-
入棧
s -> data[s -> top] = a; // 元素a放在棧頂指標處 s -> top--; //棧頂指標-1
top始終指向棧頂元素的下一個空位置
bottom始終指向n - 1
-
出棧
s -> top++; // 棧頂指標+1 x = s -> data[s -> top];
元素個數n-top-1個
當n - top-1 >= n
時棧滿
-
2.對頂棧(共享棧)
兩個棧底位於兩端,棧頂往中間聚攏
共享棧的4要素:
考點三:棧的鏈式結構
示意圖:
鏈棧4要素: