数组和矩阵

数据的存储是一段连续的地址:

image.png

image.png

image.png

image.png

image.png

image.png

基本数据结构

先行结构:

image.png

非线性结构:

image.png

线性结构

顺序表

优点:读取方便,可以随机存取表中元素。
缺点:插入和删除操作需要移动元素。在插入前要移动元素以挪出空的存储单元,然后再插入元素;删除时同样需要移动元素,以填充被删除的元素空出来的单元。
插入一个元素时结点的平均移动次数:n/2
删除一个元素时结点的平均移动次数:n-1/2
image.png

链表

采用链表这种数据结构,对数据的插入、删除较为方便,但是访问指定序号的元素较为麻烦,需要从头指针开始遍历。
在单链表中只能从表头结点开始往后顺序遍历整个链表,而循环单链表可以从表中的任一结点开始遍历整个链表。

image.png

image.png

广义表

image.png

image.png

这玩意的操作有点像用 python 解析 json。

树与二叉树

image.png

树的层次结构:

image.png

Snipaste_2025-04-14_15-49-43.png

image.png

完全二叉树:
Snipaste_2025-04-14_15-56-37.png

注意是除了最后一层

image.png

image.png

image.png

image.png

二叉树的遍历

Snipaste_2025-04-14_16-07-08.png

image.png

树转二叉树

Snipaste_2025-04-14_16-22-01.png

排序二叉树

image.png

image.png

平衡二叉树

image.png

哈夫曼树(最优二叉树)

image.png

image.png

image.png

image.png

image.png