提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读
+提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读
diff --git a/docs-en/chapter_stack_and_queue/queue.md b/docs-en/chapter_stack_and_queue/queue.md index 99415aff6..6d1e0f3c7 100755 --- a/docs-en/chapter_stack_and_queue/queue.md +++ b/docs-en/chapter_stack_and_queue/queue.md @@ -1056,7 +1056,7 @@ Below is the code for implementing a queue using a linked list: /* 析构函数 */ void delLinkedListQueue(LinkedListQueue *queue) { // 释放所有节点 - for (int i = 0; i < queue->queSize && queue->front != NULL; i++) { + while (queue->front != NULL) { ListNode *tmp = queue->front; queue->front = queue->front->next; free(tmp); diff --git a/docs/chapter_computational_complexity/space_complexity.md b/docs/chapter_computational_complexity/space_complexity.md index 44b7fa68b..02e684816 100755 --- a/docs/chapter_computational_complexity/space_complexity.md +++ b/docs/chapter_computational_complexity/space_complexity.md @@ -2059,7 +2059,7 @@ $$ 对数阶常见于分治算法。例如归并排序,输入长度为 $n$ 的数组,每轮递归将数组从中点处划分为两半,形成高度为 $\log n$ 的递归树,使用 $O(\log n)$ 栈帧空间。 -再例如将数字转化为字符串,输入一个正整数 $n$ ,它的位数为 $\log_{10} n + 1$ ,即对应字符串长度为 $\log_{10} n + 1$ ,因此空间复杂度为 $O(\log_{10} n + 1) = O(\log n)$ 。 +再例如将数字转化为字符串,输入一个正整数 $n$ ,它的位数为 $\lfloor \log_{10} n \rfloor + 1$ ,即对应字符串长度为 $\lfloor \log_{10} n \rfloor + 1$ ,因此空间复杂度为 $O(\log_{10} n + 1) = O(\log n)$ 。 ## 2.4.4 权衡时间与空间 diff --git a/docs/chapter_data_structure/character_encoding.md b/docs/chapter_data_structure/character_encoding.md index ea77ad9f6..952df435d 100644 --- a/docs/chapter_data_structure/character_encoding.md +++ b/docs/chapter_data_structure/character_encoding.md @@ -86,7 +86,7 @@ UTF-8 的编码规则并不复杂,分为以下两种情况。 - JavaScript 和 TypeScript 的字符串使用 UTF-16 编码的原因与 Java 类似。当 1995 年 Netscape 公司首次推出 JavaScript 语言时,Unicode 还处于发展早期,那时候使用 16 位的编码就足以表示所有的 Unicode 字符了。 - C# 使用 UTF-16 编码,主要是因为 .NET 平台是由 Microsoft 设计的,而 Microsoft 的很多技术(包括 Windows 操作系统)都广泛使用 UTF-16 编码。 -由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字节,从而丧失了等长编码的优势。另一方面,处理代理对需要增加额外代码,这提高了编程的复杂性和调试难度。 +由于以上编程语言对字符数量的低估,它们不得不采取“代理对”的方式来表示超过 16 位长度的 Unicode 字符。这是一个不得已为之的无奈之举。一方面,包含代理对的字符串中,一个字符可能占用 2 字节或 4 字节,从而丧失了等长编码的优势。另一方面,处理代理对需要额外增加代码,这提高了编程的复杂性和调试难度。 出于以上原因,部分编程语言提出了一些不同的编码方案。 diff --git a/docs/chapter_data_structure/classification_of_data_structure.md b/docs/chapter_data_structure/classification_of_data_structure.md index 04c7fc2e6..5fa5e3238 100644 --- a/docs/chapter_data_structure/classification_of_data_structure.md +++ b/docs/chapter_data_structure/classification_of_data_structure.md @@ -12,19 +12,18 @@ comments: true 如图 3-1 所示,逻辑结构可分为“线性”和“非线性”两大类。线性结构比较直观,指数据在逻辑关系上呈线性排列;非线性结构则相反,呈非线性排列。 -- **线性数据结构**:数组、链表、栈、队列、哈希表。 +- **线性数据结构**:数组、链表、栈、队列、哈希表,元素之间是一对一的顺序关系。 - **非线性数据结构**:树、堆、图、哈希表。 +非线性数据结构可以进一步划分为树形结构和网状结构。 + +- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。 +- **网状结构**:图,元素之间是多对多的关系。 + ![线性数据结构与非线性数据结构](classification_of_data_structure.assets/classification_logic_structure.png){ class="animation-figure" }
图 3-1 线性数据结构与非线性数据结构
-非线性数据结构可以进一步划分为树形结构和网状结构。 - -- **线性结构**:数组、链表、队列、栈、哈希表,元素之间是一对一的顺序关系。 -- **树形结构**:树、堆、哈希表,元素之间是一对多的关系。 -- **网状结构**:图,元素之间是多对多的关系。 - ## 3.1.2 物理结构:连续与分散 **当算法程序运行时,正在处理的数据主要存储在内存中**。图 3-2 展示了一个计算机内存条,其中每个黑色方块都包含一块内存空间。我们可以将内存想象成一个巨大的 Excel 表格,其中每个单元格都可以存储一定大小的数据。 diff --git a/docs/chapter_stack_and_queue/queue.md b/docs/chapter_stack_and_queue/queue.md index 1a14b375c..10d5aeaa0 100755 --- a/docs/chapter_stack_and_queue/queue.md +++ b/docs/chapter_stack_and_queue/queue.md @@ -1056,7 +1056,7 @@ comments: true /* 析构函数 */ void delLinkedListQueue(LinkedListQueue *queue) { // 释放所有节点 - for (int i = 0; i < queue->queSize && queue->front != NULL; i++) { + while (queue->front != NULL) { ListNode *tmp = queue->front; queue->front = queue->front->next; free(tmp); diff --git a/docs/index.md b/docs/index.md index 1e99458c2..03ce90f02 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,91 +23,91 @@ hide: style="position: absolute; width: auto; height: 78.751%; left: 10.545%; top: 7.326%;"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + -动画图解、一键运行的数据结构与算法教程
-提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读
+提供网页版和 PDF 版,兼容 PC、平板和手机,随时随地阅读