Hello 算法 1.0.0b4 C#版哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“拉链法”(后续散列表章节会讲)。 在拉链法中,数组中每个地址(桶)指向一个链表;当这个链表长度超过一定阈值时,又可能 被转化为树(通常为红黑树)。因此,哈希表可能同时包含线性(数组、链表)和非线性(树) 数据结构。 � char 类型的长度是 1 byte 吗? char 类型的长度由编程语言采用的编码方法决定。例如,Java, 图:邻接表是表示图的一种常用方式,在其中,图的每个顶点都与一个链表相关联,链表中的每个元素 都代表与该顶点相连的其他顶点。 双向链表常被用于需要快速查找前一个和下一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要知道一个节点的父节点,这可以通过在节点中保存一 个指向父节点的指针来实现,类似于双向链表。 4. 数组与链表 hello‑algo.com 60 ‧ 浏览器历史:在网页浏 Queue」是一种遵循先入先出(First In, First Out)规则的线性数据结构。顾名思义,队列模拟了排 队现象,即新来的人不断加入队列的尾部,而位于队列头部的人逐个离开。 我们把队列的头部称为「队首」,尾部称为「队尾」,把将元素加入队尾的操作称为「入队」,删除队首元素的 操作称为「出队」。 Figure 5‑4. 队列的先入先出规则 5. 栈与队列 hello‑algo.com 75 50 码力 | 341 页 | 27.39 MB | 1 年前3
Hello 算法 1.0.0 C#版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 queue」是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 5.2.1 队列常用操作 队列的常见操作如表 5‑2 所示。需要注意的是,不同编程语言的方法名称可能会有所不同。我们在此采用与0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.1.0 C#版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 5.2.1 队列常用操作 队列的常见操作如表 5‑2 所示。需要注意的是,不同编程语言的方法名称可能会有所不同。我们在此采用与0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C# 版Q:为什么哈希表同时包含线性数据结构和非线性数据结构? 哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续“哈希冲突”章节会讲):数 组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。 从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或一棵 树。因此,哈希表可能同时包含线性数据结构(数组、链表)和非线性数据结构(树)。 Q:char 图:邻接表是表示图的一种常用方式,其中图的每个顶点都与一个链表相关联,链表中的每个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删 除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 5.2.1 队列常用操作 队列的常见操作如表 5‑2 所示。需要注意的是,不同编程语言的方法名称可能会有所不同。我们在此采用与0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b5 C#版哈希表底层是数组,而为了解决哈希冲突,我们可能会使用“链式地址”(后续哈希表章节会 讲)。在拉链法中,数组中每个地址(桶)指向一个链表;当这个链表长度超过一定阈值时,又 可能被转化为树(通常为红黑树)。因此,哈希表可能同时包含线性(数组、链表)和非线性 (树)数据结构。 � char 类型的长度是 1 byte 吗? char 类型的长度由编程语言采用的编码方法决定。例如,Java、JS、TS、C# 图:邻接表是表示图的一种常用方式,在其中,图的每个顶点都与一个链表相关联,链表中的每个元素 都代表与该顶点相连的其他顶点。 双向链表常被用于需要快速查找前一个和下一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 queue」是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断 加入队列的尾部,而位于队列头部的人逐个离开。 如图 5‑4 所示,我们将队列的头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”, 删除队首元素的操作称为“出队”。 图 5‑4 队列的先入先出规则 第 5 章 栈与队列 hello‑algo.com 91 5.2.1 队列常用操作 队列的常见操作如表 5‑20 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C# 版bottom of the stack 栈底 堆疊底 queue 队列 佇列 double‑ended queue 双向队列 雙向佇列 front of the queue 队首 佇列首 rear of the queue 队尾 佇列尾 hash table 哈希表 雜湊表 hash set 哈希集合 雜湊集合 bucket 桶 桶 第 16 章 附錄 www.hello‑algo.com balanced binary tree 平衡二叉树 平衡二元樹 binary search tree 二叉搜索树 二元搜尋樹 AVL tree AVL 树 AVL 樹 red‑black tree 红黑树 紅黑樹 level‑order traversal 层序遍历 層序走訪 breadth‑first traversal 广度优先遍历 廣度優先走訪 depth‑first traversal0 码力 | 379 页 | 18.79 MB | 10 月前3
共 6 条
- 1













