數據結構一覽
呢篇文 需要熟悉呢方面嘅人幫手寫。 |
以下係常用嘅數據結構一覽。
線性數據結構
編輯- 陣列同矩陣:抽象咁舉個例子,下面呢張圖有一個 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)係款進階嘅數據結構。响最基本上,一幅圖會有
如果有兩粒節點之間有條邊連住,佢哋就算係相鄰(adjacent)嘅,而一幅圖嘅大細可以由節點嘅數量或者節點之間嘅邊嘅數量嚟反映。好似下圖噉,下圖係一幅有 6 粒節點嘅圖數據,當中節點 1 同節點 2 之間有連結(可以由節點 1 行去節點 2 或者相反)、節點 1 同節點 5 之間有連結(可以由節點 1 行去節點 5 或者相反)... 如此類推[2]。
其他
編輯睇埋
編輯註釋
編輯- ↑ 進階嘅應用仲可以會諗到「一對節點之間可以有多過一條邊」嘅情況。