
1. 栈 Stack(先进后出)
图形可视化
入栈 1 → [1]
入栈 2 → [1, 2]
入栈 3 → [1, 2, 3]
出栈 → 弹出 3,剩余 [1, 2]
代码
# 栈可视化
stack = []
print("=== 栈(先进后出)===")
stack.append(1)
print("入栈 1 →", stack)
stack.append(2)
print("入栈 2 →", stack)
stack.append(3)
print("入栈 3 →", stack)
top = stack.pop()
print("出栈 → 弹出", top, "剩余", stack)
2. 队列 Queue(先进先出)
图形可视化
排队:A → B → C
出队:A 先走
剩余:B → C
代码
from collections import deque
print("\n=== 队列(先进先出)===")
q = deque()
q.append("A")
q.append("B")
q.append("C")
print("排队:", " → ".join(q))
first = q.popleft()
print("出队:", first, "先走")
print("剩余:", " → ".join(q))
3. 数组 Array(连续柜子)
图形可视化
数组下标: 0 1 2 3
数据: [10, 20, 30, 40]
取 下标1 → 20
代码
print("\n=== 数组(连续存储)===")
arr = [10, 20, 30, 40]
print("数组下标: 0 1 2 3")
print("数据: ", arr)
print("取 下标1 →", arr[1])
4. 链表 Linked List(寻宝)
图形可视化
链表:1 → 2 → 3 → None
代码
print("\n=== 链表(一个指一个)===")
classNode:
def__init__(self, val):
self.val = val
self.next = None
head = Node(1)
head.next = Node(2)
head.next.next = Node(3)
# 可视化遍历
cur = head
print("链表:", end=" ")
while cur:
print(cur.val, end=" → ")
cur = cur.next
print("None")
5. 树 Tree(层级)
图形可视化
1
/ \
2 3
代码
print("\n=== 二叉树(层级结构)===")
classTreeNode:
def__init__(self, val):
self.val = val
self.left = None
self.right = None
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
print(" 1")
print(" / \\")
print(" 2 3")
6. 图 Graph(网状)
图形可视化
A ↔ B ↔ D
↕
C
代码
print("\n=== 图(网状连接)===")
graph = {
"A": ["B", "C"],
"B": ["A", "D"],
"C": ["A"],
"D": ["B"]
}
print("A ↔ B ↔ D")
print("↕")
print("C")
7. 堆 Heap(优先级)
图形可视化
堆:[1, 3, 2] 最小 1 在最顶上
弹出最小值 → 1
弹出最小值 → 2
代码
import heapq
print("\n=== 堆(优先级)===")
heap = []
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
print("堆:", heap, " 最小 1 在最顶上")
print("弹出最小值 →", heapq.heappop(heap))
print("弹出最小值 →", heapq.heappop(heap))
8. 哈希表 Hash Table(查字典)
图形可视化
哈希表:
name → 小明
age → 20
city → 北京
查 name → 小明
代码
print("\n=== 哈希表(一键定位)===")
hash_table = {"name": "小明", "age": 20, "city": "北京"}
print("哈希表:")
for k, v in hash_table.items():
print(k, "→", v)
print("查 name →", hash_table["name"])
一键运行全部代码
# 8 大数据结构 可视化完整版
print("===== 8 大数据结构可视化 =====\n")
# 1. 栈
stack = []
print("1. 栈(先进后出)")
stack.append(1)
print("入栈 1 →", stack)
stack.append(2)
print("入栈 2 →", stack)
stack.append(3)
print("入栈 3 →", stack)
top = stack.pop()
print("出栈 → 弹出", top, "剩余", stack, "\n")
# 2. 队列
from collections import deque
print("2. 队列(先进先出)")
q = deque(["A", "B", "C"])
print("排队:", " → ".join(q))
first = q.popleft()
print("出队:", first)
print("剩余:", " → ".join(q), "\n")
# 3. 数组
print("3. 数组(连续存储)")
arr = [10,20,30,40]
print("下标: 0 1 2 3")
print("数据:",arr)
print("取下标1 →", arr[1], "\n")
# 4. 链表
print("4. 链表(一个指一个)")
classNode:
def__init__(self,val):
self.val=val
self.next=None
head=Node(1)
head.next=Node(2)
head.next.next=Node(3)
cur=head
print("链表:",end="")
while cur:
print(cur.val,end="→")
cur=cur.next
print("None\n")
# 5. 树
print("5. 二叉树(层级)")
print(" 1")
print(" / \\")
print(" 2 3\n")
# 6. 图
print("6. 图(网状)")
print("A↔B↔D")
print("↓")
print("C\n")
# 7. 堆
import heapq
print("7. 堆(优先级)")
heap=[3,1,2]
heapq.heapify(heap)
print("堆:",heap,"(最小1在顶)")
print("弹出→",heapq.heappop(heap))
print("弹出→",heapq.heappop(heap),"\n")
# 8. 哈希表
print("8. 哈希表(查字典)")
dic={"name":"小明","age":20,"city":"北京"}
for k,v in dic.items():
print(f"{k:5} → {v}")
总结
ps:这里说一下class的用法
# 1. 造模板(class = 模板)
classPerson:
def__init__(self, name):
self.name = name # 2. 存属性
# 3. 用模板造人(对象)
p = Person("小明")
print(p.name) # 输出:小明
class Person:class:我要做一个模板,Person:模板名字叫「人」
def __init__(self, name): 造人时自动执行,用来给人设置名字
self.name = nameself = 造出来的这个人自己,把名字存到这个人身上
p = Person("小明") 用模板造一个人,名字叫「小明」
p.name 取出这个人身上的名字
classTreeNode:
def__init__(self, val):
self.val = val # 存值
self.left = None# 左孩子
self.right = None# 右孩子
node = TreeNode(1) # 造节点,值=1
print(node.val) # 输出:1
和 Person 一模一样