1. 数组 (Array)

核心概念:就像一排连续的储物柜,每个柜子有编号(索引),放着东西。

  • 特点:通过编号(索引)能瞬间找到东西(随机访问快);但在中间插入 / 删除东西时,后面的柜子都要移动位置(慢)。
  • Python 实现:Python 中的 list 列表本质上就是动态数组(自动扩容)。

python

运行

# 1. 创建数组
arr = [10, 20, 30, 40]

# 2. 访问 (通过索引,速度极快 O(1))
print(arr[0])  # 输出: 10

# 3. 修改
arr[1] = 200

# 4. 插入 (在中间插入很慢,因为后面的元素要往后挪 O(n))
arr.insert(2, 25)  # 在索引2处插入25

# 5. 删除
arr.pop(1)  # 删除索引1处的元素

2. 字符串 (String)

核心概念:就是一串字符,比如 "Hello"。

  • 特点:在 Python 中,字符串是不可变的(Immutable)。这意味着你一旦创建了它,就不能直接修改里面的某个字,只能造一个新的。

python

运行

# 1. 创建
s = "Hello World"

# 2. 访问 (和数组一样用索引)
print(s[0])  # 输出: 'H'

# 3. 切片 (截取子串)
print(s[0:5]) # 输出: 'Hello'

# 4. 拼接 (产生新字符串)
s2 = s + "!" 

# 注意:不能直接修改 s[0] = 'h',这会报错!
# 如果要改,只能重新造一个:
s = "h" + s[1:] 

3. 链表 (Linked List)

核心概念:像一列火车,每节车厢(节点)装着货物(数据)和一个钩子(指针),钩子勾着下一节车厢。

  • 特点:内存不是连续的。插入 / 删除东西很快(只要改一下钩子);但想找中间某节车厢,必须从车头一节一节往后找(慢)。
  • Python 实现:需要自己定义一个 Node 类。

python

运行

# 定义“车厢”类
class Node:
    def __init__(self, data):
        self.data = data  # 装的货物
        self.next = None  # 钩子,默认指向下一个

# 简单的链表操作示例
# 1. 创建车厢
n1 = Node(10)
n2 = Node(20)
n3 = Node(30)

# 2. 把车厢连起来
n1.next = n2
n2.next = n3

# 3. 遍历链表 (必须从头开始走)
current = n1
while current:
    print(current.data)
    current = current.next

4. 栈 (Stack)

核心概念:像往弹夹里压子弹,或者往箱子里放书。

  • 规则:后进先出 (LIFO)。最后放进去的,第一个拿出来。
  • Python 实现:直接用 list 即可。

python

运行

stack = []

# 1. 入栈 (Push):把东西放进去
stack.append("《西游记》")
stack.append("《红楼梦》")
stack.append("《三国演义》")

# 此时栈里: [西游记, 红楼梦, 三国演义] (三国演义在最上面)

# 2. 出栈 (Pop):把最上面的东西拿出来
book = stack.pop()
print(book) # 输出: 《三国演义》

# 3. 查看栈顶 (Peek)
print(stack[-1]) # 输出: 《红楼梦》

5. 队列 (Queue)

核心概念:像在食堂排队打饭。

  • 规则:先进先出 (FIFO)。先来的先服务。
  • Python 实现:为了效率,我们用 collections.deque(双端队列)。

python

运行

from collections import deque

# 创建队列
q = deque()

# 1. 入队 (Enqueue):人排到队尾
q.append("张三")
q.append("李四")
q.append("王五")

# 2. 出队 (Dequeue):队头的人走了
person = q.popleft() 
print(person) # 输出: 张三

print(q) # 剩下: deque(['李四', '王五'])

6. 哈希表 (Hash Table / Dictionary)

核心概念:就像一本字典。通过 “偏旁部首”(哈希函数)直接翻到那一页,而不是从第一页开始找。

  • 特点:存储的是 键值对 (Key-Value)。查找速度极快(平均 O (1))。
  • Python 实现:直接用 dict 字典。

python

运行

# 1. 创建哈希表 (字典)
# 这里 Key 是名字,Value 是电话号码
phone_book = {
    "张三": 1380000,
    "李四": 1391111
}

# 2. 访问 (通过 Key 直接找 Value,速度极快)
print(phone_book["张三"]) 

# 3. 插入/修改
phone_book["王五"] = 1362222 # 插入
phone_book["张三"] = 1389999 # 修改

# 4. 删除
del phone_book["李四"]

总结对比

表格

数据结构优点缺点典型场景
数组随机访问最快中间插入删除慢快速读取,已知索引
链表插入删除快查找慢实现栈 / 队列,频繁增删
栈后进先出-撤销操作,括号匹配
队列先进先出-任务排队,消息队列
哈希表查找 / 插入 / 删除都极快-快速查找,字典,缓存

更多推荐