資料結構在計算機科學當中至關重要,他為信息世界提供了堅實的基礎。數據以各種形式存在,包刮文本、圖像、音頻、視頻等等。
資料結構是組織、儲存數據的方式,有助於提高數據的訪問效率、減少資源消耗。
一個連續的數據集合,每個元素都有唯一的索引。陣列用於高效的隨機訪問,但大小通常是固定的。
# 建立整數陣列
my_array = [1, 2, 3, 4, 5]
# 訪問陣列
puts my_array[2] # 输出: 3
# 將元素添加到陣列尾端
my_array << 6
# 遍歷陣列元素
my_array.each do |element|
puts element
end
一組節點,每個節點包含數據和指向下一個節點的引用。鏈結串列用於動態數據結構,可以動態添加或刪除元素。
# 創建一個 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
基於散列函數的數據結構,用於高效地查找和存儲鍵-值對。
# 創建哈希表
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
非線性數據結構,包括二叉樹、二叉搜索樹、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)
以上簡單的介紹資料結構,我也還在吸收當中!
大家一起加油~