1 堆(Heap)
堆是一种特殊的树形数据结构,通常用于实现优先队列。
import heapq
# 创建堆
my_heap = [1, 3, 5, 7, 9]
heapq.heapify(my_heap)
# 添加元素
heapq.heappush(my_heap, 2)
# 弹出最小元素
min_element = heapq.heappop(my_heap)
2 队列(Queue)
队列是一种先进先出(FIFO)的数据结构,常用于任务调度等场景。
from queue import Queue
# 创建队列
my_queue = Queue()
# 入队
my_queue.put(1)
my_queue.put(2)
# 出队
first_element = my_queue.get()
3 栈(Stack)
栈是一种后进先出(LIFO)的数据结构,通常用于递归、表达式求值等场景。
# 创建栈
my_stack = []
# 入栈
my_stack.append(1)
my_stack.append(2)
# 出栈
top_element = my_stack.pop()
4 链表(Linked List)
链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的引用。链表可以分为单向链表和双向链表。
# 单向链表节点
class Node:
def __init__(self, data):
self.data = data
self.next = None
# 创建链表
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node1.next = node2
node2.next = node3
5 树(Tree)
树是一种层级结构的数据结构,由节点组成,每个节点可以有零个或多个子节点。
# 二叉树节点
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
# 创建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
6 图(Graph)
图是由节点和边组成的数据结构,节点表示实体,边表示节点之间的关系。图可以分为有向图和无向图。
# 有向图的表示
graph = {'A': ['B', 'C'],
'B': ['D', 'E'],
'C': ['F'],
'D': [],
'E': ['F'],
'F': []}
7 字典树(Trie)
字典树是一种树形数据结构,用于存储动态集合或关联数组,常用于字符串检索操作。
# Trie节点
class TrieNode:
def __init__(self):
self.children = {}
self.is_end_of_word = False
# 创建Trie
trie_root = TrieNode()
trie_root.children['a'] = TrieNode()
trie_root.children['a'].children['p'] = TrieNode()
trie_root.children['a'].children['p'].is_end_of_word = True