數據結構一覽

出自維基百科,自由嘅百科全書

以下係常用嘅數據結構一覽。

線性數據結構[編輯]

  • 陣列矩陣:抽象咁舉個例子,下面呢張圖有一個 1D 嘅陣列,入面有 10 個元素(係乜類型嘅數據唔使理),索引係由 0 數到 9。如果呢個陣列叫 a,數學上呢十個元素就會叫 ,大部份程式語言則會寫成 a[0]a[1]a[2]⋯⋯a[9]
  • 串列:表示一系列嘅嘢(可以係零個),原則上係一種循序存取嘅數據結構。用以下嘅 Python 做例子:
    my_list = [3, 6, 9, 12] # my_list 係條串列,[3, 6, 9, 12]
    
    empty_list = [] # 創建一條空嘅串列,叫 empty_list
    
    my_list.append([4,5]) # 將 [4,5] 當一嚿數據噉加落去,即係會變成 [3, 6, 9, 12, [4, 5]]。
    
    my_list.extend([4,5]) # 將 4 同 5 分開噉加落去,即係會變成 [3, 6, 9, 12, [4, 5], 4, 5]。
    
    my_list.insert(1, 4) # 將 4 加落去第 1 個位度,即係會變成 [3, 4, 6, 9, 12, [4, 5], 4, 5]。
    
    • 一段串列唔使格格都裝同一隻類型嘅數據,所以以下噉嘅 Python 碼係行得通嘅:
    my_list.append('meh') # 將 'meh' 呢段字串加落去 my_list 度,my_list 會變成 [3, 4, 6, 9, 12, [4, 5], 4, 5, 'meh']。
    

[編輯]

(tree)係一種好有用嘅數據結構,重點特性係拃數據有「高低層」之分。一樖數據樹都係會

  • 有若干粒節點(node),每粒節點都儲住咗件數據;而且
  • 啲節點分層-除咗做起始點嗰粒節點(根節點;root)之外,每粒節點有一粒(而且頂櫳一粒)母節點(parent;指喺嗰粒節點上面,連住嗰粒節點嘅另一粒節點);
  • 一粒節點可以有若干粒子節點(child / children);

於是就形成拃節點喺起始點嗰度一層層噉每層都分叉嘅樣,而是但攞粒根節點以外嘅節點,粒節點同根節點之間都有條獨一無二嘅路徑連住兩點。喺電腦科學上,啲人通常會將數據樹畫做樹狀圖噉嘅樣,根節點畫喺最頂,根節點嘅子節點會並排噉列喺根節點下面,根節點嘅子節點嘅子節點會並排噉列喺下一層... 如此類推。好似下面幅圖噉,幅圖表示緊樖數據樹,紅色嗰點係樖數據樹嘅根節點,根節點下一層嘅係佢啲子節點,再下一層嗰啲係根節點嘅子節點嘅子節點... 如此類推,而每粒節點入面嗰個整數就係粒節點裝住嗰件數據[1]

[編輯]

(graph)係款進階嘅數據結構。响最基本上,一幅圖會有

  • 若干粒節點,而且
  • 每粒節點都最少有一條(edge)連去另外一粒節點嗰度[註 1]
  • 每粒節點通常仲會褦住若干件數據,一條邊都可以帶有數據;

如果有兩粒節點之間有條邊連住,佢哋就算係相鄰(adjacent)嘅,而一幅圖嘅大細可以由節點嘅數量或者節點之間嘅邊嘅數量嚟反映。好似下圖噉,下圖係一幅有 6 粒節點嘅圖數據,當中節點 1 同節點 2 之間有連結(可以由節點 1 行去節點 2 或者相反)、節點 1 同節點 5 之間有連結(可以由節點 1 行去節點 5 或者相反)... 如此類推[2]

其他[編輯]

睇埋[編輯]

註釋[編輯]

  1. 進階嘅應用仲可以會諗到「一對節點之間可以有多過一條邊」嘅情況。

[編輯]

  1. Susanna S. Epp (Aug 2010). Discrete Mathematics with Applications. Pacific Grove, CA: Brooks/Cole Publishing Co. p. 694.
  2. Goodrich, Michael T.; Tamassia, Roberto (2015). "Section 13.1: Graph terminology and representations". Algorithm Design and Applications. Wiley. pp. 355-364.