iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

資料結構在計算機科學當中至關重要,他為信息世界提供了堅實的基礎。數據以各種形式存在,包刮文本、圖像、音頻、視頻等等。
資料結構是組織、儲存數據的方式,有助於提高數據的訪問效率、減少資源消耗。

為什麼需要資料結構?

  1. 高效的數據管理: 在計算機內部,數據以複雜的形式存在,資料結構允許我們以一種有序和高效的方式組織和存儲數據,以便快速訪問和操作。
  2. 節省內存空間: 資料結構的選擇可以大大減少內存消耗,這在處理大型數據集時尤為重要。
  3. 提高性能: 資料結構的合理選擇可以顯著提高算法的性能,使計算更快速。
  4. 數據安全: 資料結構還可以幫助確保數據的完整性和安全性,防止數據丟失或損壞。

常見的資料結構

  1. Array - 陣列

一個連續的數據集合,每個元素都有唯一的索引。陣列用於高效的隨機訪問,但大小通常是固定的。

# 建立整數陣列
my_array = [1, 2, 3, 4, 5]

# 訪問陣列
puts my_array[2] # 输出: 3

# 將元素添加到陣列尾端
my_array << 6

# 遍歷陣列元素
my_array.each do |element|
  puts element
end

  1. Linked List - 鏈表

一組節點,每個節點包含數據和指向下一個節點的引用。鏈結串列用於動態數據結構,可以動態添加或刪除元素。

# 創建一個 Node 類別
class Node
  attr_accessor :data, :next
  
  def initialize(data)
    @data = data
    @next = nil
  end
end

# 使用 new 建立鏈表並添加節點
node1 = Node.new(1)
node2 = Node.new(2)
node3 = Node.new(3)

node1.next = node2
node2.next = node3

# 遍歷鏈表
current_node = node1
while current_node
  puts current_node.data
  current_node = current_node.next
end

  1. Hash Table - 哈希表

基於散列函數的數據結構,用於高效地查找和存儲鍵-值對。

# 創建哈希表
my_hash = {}

# 添加鍵值對到哈希表
my_hash["name"] = "John"
my_hash["age"] = 30
my_hash["city"] = "New York"

# 訪問哈希表中的值
puts my_hash["name"] # 输出: "John"

# 遍歷哈希表中的鍵值對
my_hash.each do |key, value|
  puts "#{key}: #{value}"
end

  1. Tree - 樹

非線性數據結構,包括二叉樹、二叉搜索樹、AVL 樹等,用於層次化數據組織和查詢。

# 創建一個簡單的二差樹節點
class TreeNode
  attr_accessor :data, :left, :right
  
  def initialize(data)
    @data = data
    @left = nil
    @right = nil
  end
end

# 創建二叉樹
root = TreeNode.new(1)
root.left = TreeNode.new(2)
root.right = TreeNode.new(3)
root.left.left = TreeNode.new(4)
root.left.right = TreeNode.new(5)

# 遍歷二叉樹
def preorder_traversal(node)
  return if node.nil?
  puts node.data
  preorder_traversal(node.left)
  preorder_traversal(node.right)
end

puts "Preorder Traversal:"
preorder_traversal(root)

以上簡單的介紹資料結構,我也還在吸收當中!
大家一起加油~


上一篇
N+1 ? Day27
下一篇
資料結構 - Tree Day29
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言