1. 程式人生 > >【資料結構】陣列、連結串列、棧、佇列、二叉樹

【資料結構】陣列、連結串列、棧、佇列、二叉樹

陣列

  1. 陣列儲存的資料在地址空間上是連續的。
  2. 方便資料的查詢,查詢資料的時間複雜度為O(1)。

如圖所示

連結串列

  1. 連結串列儲存的資料在地址空間上可連續,可不連續。
  2. 連結串列中的每一個節點都包括資料和指向下一個地址的指標。
  3. 查詢資料的時間複雜度為O(n),方便資料的增刪。

如圖所示

如何快速找到連結串列的中間值:

  1. 先遍歷一遍單鏈表確定長度L,然後再次從頭結點出發迴圈L/2次
  2. 設定兩個指標都指向單鏈表的頭結點,第一個指標的移動速度是第二個的2倍,當第一個指向末尾結點時,第二個就指向了中間結點。這種方法要快一些。

  1. 棧是一種先入後出的邏輯結構,每次加入新的元素和拿走元素都在頂部操作。

如圖所示

佇列

  1. 佇列是一種先入先出的邏輯結構,對元素的操作分別在對頭和隊尾,元素的插入在對尾,元素的刪除在對頭。

如圖所示

二叉樹

  1. 每個節點至多隻有兩個子樹的結構,在父節點中有指向左右子樹的指標
    • 先序遍歷:根–左–右
    • 中序遍歷:左–根–右
    • 後序遍歷:左–右–根
  2. 查詢二叉樹:左子樹的值小於根節點的值,右子樹的值大於根節點的值,在插入資料時,從根節點開始往下比較,小於比較值則放在左邊,大於比較值放在右邊。插入一個值的時間複雜度是O(logn)
  3. 平衡二叉樹:左右子樹的高度差的絕對值不超過1
    如圖所示

相關推薦

no