【每日打卡】 [leetcode]876-链表的中间节点
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/middle-of-the-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个带有头结点 head 的非空单链表,返回链表的中间结 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/middle-of-the-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个带有头结点 head 的非空单链表,返回链表的中间结 ... 阅读更多
一、链表定义 链表在 redis 中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。 redis 中链表在 adlist.h 和 adlist.c 中实现,只用了 300+行代码,十分简单。 redis 中的链表是一个双向不循环的链表,两个核心的数据结构是 listNode 和 lis ... 阅读更多
本篇文章是基于前篇 《数据结构之链表 (一):单向链表》 实现的,和单向链表重复的细节不再描述。 一、双向链表 双向链表和单向链表类似,唯一的区别是链表节点中除了有指向下一个节点的指针以外,还有一个指向上一个节点的指针。 节点的定义:
|
1 2 3 4 5 6 7 8 9 |
template<typename T> class list_node { public: friend class doubly_linkedlist<T>; private: T data; list_node<T> *prev; // 指向前一个节点 list_node<T> *next; // 指向后一个节点 }; |
链表 ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/copy-list-with-random-pointer 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个链表,每个节点包含一个额外增加的随机指针,该 ... 阅读更多
一、题目描述 请实现函数 complex_list_node *clone_list(complex_list_node *head),复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的随机节点或 nullptr 。节点的 C++定义如下: [ ... 阅读更多
来源:力扣 (LeetCode) 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 一、题目描述 给定一个链表,删除链表的倒数第 n 个节点,并 ... 阅读更多
一、题目 输入一个链表,输出该链表中倒数第 k 个节点,为了符合大多数人的习惯,k 的序号从 1 开始,即链表的尾结点是倒数第一个节点。 例如,如下链表中的倒数第 3 个节点是 3: 二、解题思路 使用快慢指针,快指针先走 n 步,然后快慢指针同时走,直到快指针为 null,慢指针就是倒数第 n 个节点。 以上面的链表为例, ... 阅读更多
一、单向链表 1.1 单向链表 链表是一种线性结构,通过一个链把所有的节点都链起来,因此叫做链表。它和数组最大的不同是:数组的内存是连续的,而链表不是。数组支持随机读写,但是插入和删除麻烦,链表不支持随机读写,但是插入和删除很方便。在更多场景下,链表用途更广。 一个链表的图形示例如下,每个链表节点都 ... 阅读更多