refactor: Replace 结点 with 节点 (#452)

* Replace 结点 with 节点
Update the footnotes in the figures

* Update mindmap

* Reduce the size of the mindmap.png
This commit is contained in:
Yudong Jin
2023-04-09 04:32:17 +08:00
committed by GitHub
parent 3f4e32b2b0
commit 1c8b7ef559
395 changed files with 2056 additions and 2056 deletions

View File

@@ -258,9 +258,9 @@
### 基于链表的实现
使用「链表」实现栈时,将链表的头点看作栈顶,将尾点看作栈底。
使用「链表」实现栈时,将链表的头点看作栈顶,将尾点看作栈底。
对于入栈操作,将元素插入到链表头部即可,这种点添加方式被称为“头插法”。而对于出栈操作,则将头点从链表中删除即可。
对于入栈操作,将元素插入到链表头部即可,这种点添加方式被称为“头插法”。而对于出栈操作,则将头点从链表中删除即可。
=== "LinkedListStack"
![基于链表实现栈的入栈出栈操作](stack.assets/linkedlist_stack.png)
@@ -418,7 +418,7 @@
在数组(列表)实现中,入栈与出栈操作都是在预先分配好的连续内存中操作,具有很好的缓存本地性,效率很好。然而,如果入栈时超出数组容量,则会触发扩容机制,那么该次入栈操作的时间复杂度为 $O(n)$ 。
在链表实现中,链表的扩容非常灵活,不存在上述数组扩容时变慢的问题。然而,入栈操作需要初始化点对象并修改指针,因而效率不如数组。进一步地思考,如果入栈元素不是 `int` 而是点对象,那么就可以省去初始化步骤,从而提升效率。
在链表实现中,链表的扩容非常灵活,不存在上述数组扩容时变慢的问题。然而,入栈操作需要初始化点对象并修改指针,因而效率不如数组。进一步地思考,如果入栈元素不是 `int` 而是点对象,那么就可以省去初始化步骤,从而提升效率。
综上所述,当入栈与出栈操作的元素是基本数据类型(例如 `int` , `double` )时,则结论如下:
@@ -429,7 +429,7 @@
在初始化列表时,系统会给列表分配“初始容量”,该容量可能超过我们的需求。并且扩容机制一般是按照特定倍率(比如 2 倍)进行扩容,扩容后的容量也可能超出我们的需求。因此,**数组实现栈会造成一定的空间浪费**。
当然,由于点需要额外存储指针,因此 **链表点比数组元素占用更大**
当然,由于点需要额外存储指针,因此 **链表点比数组元素占用更大**
综上,我们不能简单地确定哪种实现更加省内存,需要 case-by-case 地分析。