資料結構基礎第3講

蠲忿恚葉言發表於2024-04-23

資料結構基礎第3講 棧及其應用

內容

img

考點一:棧的概念

1.順序棧的定義:

img

  1. 出棧順序情況計算

    給定n個元素,出棧順序的情形滿足卡特蘭數,計算公式:

    \[\frac{C_{2n}^{n}}{n+1} \]

    例題:

    確定第一個出棧的誰。有兩種可能:

    找帶頭大哥。

    img
    img

  2. 棧的順序儲存結構

    順序棧操作

    img

    順序棧4要素

    • 棧空條件: top = -1

    • 棧滿條件: top = StackSzie - 1

    • 進棧操作:top++;將e放在top處

    • 退棧操作: 從top處取出元素e; top--;

      img

  3. 棧的臨界條件

    1. 初始化時,top = bottom = -1

      img

    • 入棧:

      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時棧滿

    1. (考試預設情況)初始化時,top = bottom = 0

      img

    • 進棧

      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時棧滿

    1. 初始化時, top = bottom = n

      img

    • 入棧

      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
      時棧滿

    1. 初始化時, top = bottom = n - 1

      img

    • 入棧

      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.對頂棧(共享棧)

兩個棧底位於兩端,棧頂往中間聚攏

img

共享棧的4要素:

img

考點三:棧的鏈式結構

示意圖:

img

鏈棧4要素:

img

相關文章