赞
踩
常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图,每种数据结构都有其特点,如下:
特点:
一般应用于需要快速随机访问元素的场景。
案例:
# 定义一个数组 arr = [1, 2 , 3, 4, 5] # 访问数组元素 print(arr[2]) # 输出: 3 # 修改数组元素 arr[2] = 10 print(arr) # 输出: [1, 2, 10, 4, 5] # 添加元素 arr.append(6) print(arr) # 输出: [1, 2, 10, 4, 5, 6] # 删除元素 arr.pop(2) print(arr) # 输出: [1, 2, 4, 5, 6]
特点:
适用于需要频繁插入和删除元素的场景
案例:
class Node: def __init__(self, data=None): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node def print_list(self): curr = self.head while curr: print(curr.data, end=" -> ") curr = curr.next print("None") # 使用链表 llist = LinkedList() llist.append(1) llist.append(2) llist.append(3) llist.print_list() # 输出: 1 -> 2 -> 3 -> None
特点:
应用于需要先进先出访问元素的场景,如任务调度、消息队列等
案例:
from collections import deque
# 使用 deque 实现队列
queue = deque()
# 入队
queue.append(1)
queue.append(2)
queue.append(3)
print(queue) # 输出: deque([1, 2, 3])
# 出队
print(queue.popleft()) # 输出: 1
print(queue) # 输出: deque([2, 3])
特点:
应用于需要后进先出访问元素的场景,如函数调用栈、表达式求值等
案例:
# 使用列表实现栈
stack = []
# 入栈
stack.append(1)
stack.append(2)
stack.append(3)
print(stack) # 输出: [1, 2, 3]
# 出栈
print(stack.pop()) # 输出: 3
print(stack) # 输出: [1, 2]
特点:
应用于需要表示层次结构的场景,比如文件系统、组织结构等
案例:
class TreeNode: def __init__(self, data): self.data = data self.children = [] def add_child(self, child_node): self.children.append(child_node) def print_tree(self, level=0): prefix = " " * (level * 4) print(prefix + self.data) for child in self.children: child.print_tree(level + 1) # 创建树 root = TreeNode("Root") child1 = TreeNode("Child1") child2 = TreeNode("Child2") child3 = TreeNode("Child3") root.add_child(child1) root.add_child(child2) child1.add_child(TreeNode("Grandchild1")) child1.add_child(TreeNode("Grandchild2")) root.print_tree()
特点:
应用于需要表示网络结构的场景,如社交网络、交通网络等。
案例:
class Graph: def __init__(self): self.graph = {} def add_edge(self, u, v): if u not in self.graph: self.graph[u] = [] self.graph[u].append(v) def print_graph(self): for node in self.graph: print(f"{node} -> {', '.join(self.graph[node])}") # 创建图 g = Graph() g.add_edge("A", "B") g.add_edge("A", "C") g.add_edge("B", "D") g.add_edge("C", "D") g.print_graph()
特点:
应用于需要快速查找和插入操作的场景,如字典、缓存等。
案例:
# 使用字典实现哈希表 hash_table = {} # 插入键值对 hash_table["name"] = "John" hash_table["age"] = 30 hash_table["city"] = "New York" print(hash_table) # 输出: {'name': 'John', 'age': 30, 'city': 'New York'} # 查找键值对 print(hash_table["name"]) # 输出: John # 删除键值对 del hash_table["age"] print(hash_table) # 输出: {'name': 'John', 'city': 'New York'}
特点:
适用于优先队列,堆排序和实现高效的合并K个有序链表问题。
案例:
import heapq # 创建一个最小堆 min_heap = [] # 插入元素 heapq.heappush(min_heap, 3) heapq.heappush(min_heap, 1) heapq.heappush(min_heap, 4) heapq.heappush(min_heap, 2) print(min_heap) # 输出: [1, 2, 4, 3] # 弹出最小元素 print(heapq.heappop(min_heap)) # 输出: 1 print(min_heap) # 输出: [2, 3, 4] # 创建一个最大堆(通过将元素取反实现) max_heap = [] heapq.heappush(max_heap, -3) heapq.heappush(max_heap, -1) heapq.heappush(max_heap, -4) heapq.heappush(max_heap, -2) print([-x for x in max_heap]) # 输出: [4, 2, 3, 1] # 弹出最大元素 print(-heapq.heappop(max_heap)) # 输出: 4 print([-x for x in max_heap]) # 输出: [3, 2, 1]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。