This commit is contained in:
krahets
2023-11-09 05:13:48 +08:00
parent 9701430089
commit 0105644232
83 changed files with 516 additions and 509 deletions

View File

@@ -6,7 +6,7 @@ comments: true
「数组 array」是一种线性数据结构其将相同类型元素存储在连续的内存空间中。我们将元素在数组中的位置称为该元素的「索引 index」。图 4-1 展示了数组的主要术语和概念。
![数组定义与存储方式](array.assets/array_definition.png)
![数组定义与存储方式](array.assets/array_definition.png){ class="animation-figure" }
<p align="center"> 图 4-1 &nbsp; 数组定义与存储方式 </p>
@@ -123,7 +123,7 @@ comments: true
数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。给定数组内存地址(即首元素内存地址)和某个元素的索引,我们可以使用图 4-2 所示的公式计算得到该元素的内存地址,从而直接访问此元素。
![数组元素的内存地址计算](array.assets/array_memory_location_calculation.png)
![数组元素的内存地址计算](array.assets/array_memory_location_calculation.png){ class="animation-figure" }
<p align="center"> 图 4-2 &nbsp; 数组元素的内存地址计算 </p>
@@ -291,7 +291,7 @@ comments: true
数组元素在内存中是“紧挨着的”,它们之间没有空间再存放任何数据。如图 4-3 所示,如果想要在数组中间插入一个元素,则需要将该元素之后的所有元素都向后移动一位,之后再把元素赋值给该索引。
![数组插入元素示例](array.assets/array_insert_element.png)
![数组插入元素示例](array.assets/array_insert_element.png){ class="animation-figure" }
<p align="center"> 图 4-3 &nbsp; 数组插入元素示例 </p>
@@ -468,7 +468,7 @@ comments: true
同理,如图 4-4 所示,若想要删除索引 $i$ 处的元素,则需要把索引 $i$ 之后的元素都向前移动一位。
![数组删除元素示例](array.assets/array_remove_element.png)
![数组删除元素示例](array.assets/array_remove_element.png){ class="animation-figure" }
<p align="center"> 图 4-4 &nbsp; 数组删除元素示例 </p>

View File

@@ -5,11 +5,7 @@ icon: material/view-list-outline
# 第 4 章 &nbsp; 数组与链表
<div class="center-table" markdown>
![数组与链表](../assets/covers/chapter_array_and_linkedlist.jpg){ width="600" }
</div>
![数组与链表](../assets/covers/chapter_array_and_linkedlist.jpg){ class="cover-image" }
!!! abstract

View File

@@ -10,7 +10,7 @@ comments: true
链表的设计使得各个节点可以被分散存储在内存各处,它们的内存地址是无须连续的。
![链表定义与存储方式](linked_list.assets/linkedlist_definition.png)
![链表定义与存储方式](linked_list.assets/linkedlist_definition.png){ class="animation-figure" }
<p align="center"> 图 4-5 &nbsp; 链表定义与存储方式 </p>
@@ -405,7 +405,7 @@ comments: true
相比之下,在数组中插入元素的时间复杂度为 $O(n)$ ,在大数据量下的效率较低。
![链表插入节点示例](linked_list.assets/linkedlist_insert_node.png)
![链表插入节点示例](linked_list.assets/linkedlist_insert_node.png){ class="animation-figure" }
<p align="center"> 图 4-6 &nbsp; 链表插入节点示例 </p>
@@ -547,7 +547,7 @@ comments: true
请注意,尽管在删除操作完成后节点 `P` 仍然指向 `n1` ,但实际上遍历此链表已经无法访问到 `P` ,这意味着 `P` 已经不再属于该链表了。
![链表删除节点](linked_list.assets/linkedlist_remove_node.png)
![链表删除节点](linked_list.assets/linkedlist_remove_node.png){ class="animation-figure" }
<p align="center"> 图 4-7 &nbsp; 链表删除节点 </p>
@@ -1316,7 +1316,7 @@ comments: true
}
```
![常见链表种类](linked_list.assets/linkedlist_common_types.png)
![常见链表种类](linked_list.assets/linkedlist_common_types.png){ class="animation-figure" }
<p align="center"> 图 4-8 &nbsp; 常见链表种类 </p>