Hello 算法 1.0.0b4 C++版2. 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.4. 小结 . . ,则得到一个环形链表。在环形链表中, 任意节点都可以视作头节点。 双向链表。与单向链表相比,双向链表记录了两个方向的指针(引用)。双向链表的节点定义同时包含指向后 继节点(下一节点)和前驱节点(上一节点)的指针。相较于单向链表,双向链表更具灵活性,可以朝两个 方向遍历链表,但相应地也需要占用更多的内存空间。 /* 双向链表节点结构体 */ struct ListNode { int val; 都代表与该顶点相连的其他顶点。 双向链表常被用于需要快速查找前一个和下一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要知道一个节点的父节点,这可以通过在节点中保存一 个指向父节点的指针来实现,类似于双向链表。 4. 数组与链表 hello‑algo.com 60 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。0 码力 | 343 页 | 27.39 MB | 1 年前3
 现代C++ 教程:高速上手C++11/14/17/20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 第 8 章文件系统 75 8.1 文档与链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.2 std::filesystem C++ 时,也应该尽可能 的避免使用诸如 void* 之类的程序风格。而在不得不使用 C 时,应该注意使用 extern "C" 这种特性, 将 C 语言的代码与 C++ 代码进行分离编译,再统一链接这种做法,例如: // foo.h #ifdef __cplusplus extern "C" { #endif int add(int x, int y); #ifdef __cplusplus return 0; } 应先使用 gcc 编译 C 语言的代码: gcc -c foo.c 编译出 foo.o 文件,再使用 clang++ 将 C++ 代码和 .o 文件链接起来(或者都编译为 .o 再统一 链接): 10 进一步阅读的参考文献 第 1 章迈向现代 C++ clang++ 1.1.cpp foo.o -std=c++2a -o 1.1 当然,你可以使用 Makefile0 码力 | 83 页 | 2.42 MB | 1 年前3
 Hello 算法 1.1.0 C++ 版5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4 小结 . . 到一个环形链表。在环形链表 中,任意节点都可以视作头节点。 ‧ 双向链表:与单向链表相比,双向链表记录了两个方向的引用。双向链表的节点定义同时包含指向后继 节点(下一个节点)和前驱节点(上一个节点)的引用(指针)。相较于单向链表,双向链表更具灵活 性,可以朝两个方向遍历链表,但相应地也需要占用更多的内存空间。 /* 双向链表节点结构体 */ struct ListNode { int 个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU0 码力 | 379 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0 C++版5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4 小结 . . 到一个环形链表。在环形链表 中,任意节点都可以视作头节点。 ‧ 双向链表:与单向链表相比,双向链表记录了两个方向的引用。双向链表的节点定义同时包含指向后继 节点(下一个节点)和前驱节点(上一个节点)的引用(指针)。相较于单向链表,双向链表更具灵活 性,可以朝两个方向遍历链表,但相应地也需要占用更多的内存空间。 /* 双向链表节点结构体 */ struct ListNode { int 个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU0 码力 | 378 页 | 17.59 MB | 1 年前3
 Hello 算法 1.0.0b5 C++版5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.4 小结 . . . 到一个环形链表。在环形链 表中,任意节点都可以视作头节点。 ‧ 双向链表:与单向链表相比,双向链表记录了两个方向的引用。双向链表的节点定义同时包含指向后继 节点(下一个节点)和前驱节点(上一个节点)的引用(指针)。相较于单向链表,双向链表更具灵活 性,可以朝两个方向遍历链表,但相应地也需要占用更多的内存空间。 /* 双向链表节点结构体 */ struct ListNode { int val; 元素 都代表与该顶点相连的其他顶点。 双向链表常被用于需要快速查找前一个和下一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU0 码力 | 377 页 | 30.69 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 C++ 版5.2 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4 小结 . . 到一个环形链表。在环形链表 中,任意节点都可以视作头节点。 ‧ 双向链表:与单向链表相比,双向链表记录了两个方向的引用。双向链表的节点定义同时包含指向后继 节点(下一个节点)和前驱节点(上一个节点)的引用(指针)。相较于单向链表,双向链表更具灵活 性,可以朝两个方向遍历链表,但相应地也需要占用更多的内存空间。 /* 双向链表节点结构体 */ struct ListNode { int 个元素都代 表与该顶点相连的其他顶点。 双向链表常用于需要快速查找前一个和后一个元素的场景。 ‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU0 码力 | 379 页 | 18.48 MB | 10 月前3
 Hello 算法 1.0.0b1 C++版队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.4. 小结 . 则得到一个环形链表。在环形链表中,我 们可以将任意结点看作是头结点。 双向链表。单向链表仅记录了一个方向的指针(引用),在双向链表的结点定义中,同时有指向下一结点(后 继结点)和上一结点(前驱结点)的「指针(引用)」。双向链表相对于单向链表更加灵活,即可以朝两个方向 遍历链表,但也需要占用更多的内存空间。 /* 双向链表结点结构体 */ struct ListNode { int val; 数组支持随机访问、内存空间占用小;但插入与删除元素效率低,且初始化后长度不可变。 ‧ 链表可通过更改指针实现高效的结点插入与删除,并且可以灵活地修改长度;但结点访问效率低、占用 内存多。常见的链表类型有单向链表、循环链表、双向链表。 ‧ 列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,且可以灵活改变长度。列 表的出现大大提升了数组的实用性,但副作用是会造成部分内存空间浪费。 ‧ 下表总结对比了数组与链表的各项特性。0 码力 | 187 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 C++版队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3. 双向队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.4. 小结 . 则得到一个环形链表。在环形链表中,我 们可以将任意结点看作是头结点。 双向链表。单向链表仅记录了一个方向的指针(引用),在双向链表的结点定义中,同时有指向下一结点(后 继结点)和上一结点(前驱结点)的「指针(引用)」。双向链表相对于单向链表更加灵活,即可以朝两个方向 遍历链表,但也需要占用更多的内存空间。 /* 双向链表结点结构体 */ struct ListNode { int val; 数组支持随机访问、内存空间占用小;但插入与删除元素效率低,且初始化后长度不可变。 ‧ 链表可通过更改指针实现高效的结点插入与删除,并且可以灵活地修改长度;但结点访问效率低、占用 内存多。常见的链表类型有单向链表、循环链表、双向链表。 ‧ 列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,且可以灵活改变长度。列 表的出现大大提升了数组的实用性,但副作用是会造成部分内存空间浪费。 ‧ 下表总结对比了数组与链表的各项特性。0 码力 | 197 页 | 15.72 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器(一次 性) back_insert_iterator output_iterator 前向迭代器 * , != , == , ++ forward_list forward_iterator 双向迭代器 * , != , == , ++ , -- set , map , list bidirectional_iterator 随机访问迭代器 * , != , == , ++ , -- , + com/w/cpp/iterator/random_access_iterator https://www.cplusplus.com/reference/iterator/istream_iterator 包含关系:前向迭代器>双向迭代器>随机访问迭代器 这意味着如果一个 STL 模板函数(比如 std::find )要求迭代器是前向迭代器即可,那么也可 以给他随机访问迭代器,因为前向迭代器是随机访问迭代器的子集。 例如, vector advance 相当于 += , next 相当于 + 。 next 和 advance 同样支持负数 • next 的第二个参数 n 通常是正 数,表示向前走的距离。 • 如果迭代器类型是双向迭代器。 next 的第二个参数 n 还可以是 负数,这时他会让迭代器往前走 一段距离,例如: • std::next(it, -3) 相当于 it - 3 。 • 还可以用另一个专门的函数0 码力 | 83 页 | 10.23 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 02 现代 C++ 入门:RAII 内存管理。 回家作业! • 已经发布到: https://github.com/parallel101/hw02 • 仓库的 README.md 里有详细的作业要求和说明。请按要求修改其中的代码,使得双向 链表类 List 的拷贝构造函数能正常工作,且内存能够安全释放。 • 通过 pull request 提交你的作业,这样我可以通过 diff 页面清楚地看到你的改动。 • 什么事 pull request0 码力 | 96 页 | 16.28 MB | 1 年前3
共 22 条
- 1
 - 2
 - 3
 













