摘要: 1. 原题链接:https://leetcode.com/problems/reorder list/ 2. 解题思路 1. 找到中间节点,从中间节点位置断开,得到两个链表 2. 对链表的后半截部分进行翻转 3. 将前半截和翻转后的后半截链表进行合并 3. 算法 1. 通过slow、fast指针找到 阅读全文
posted @ 2020-02-19 15:35 wengle 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/copy list with random pointer/ 2. 解题思路 2.1 映射表 1. 建立新旧节点之间的映射表:old new,来解决复制random指针 2.2 克隆链表 1. 创建一个包含新节点的克隆链表: 阅读全文
posted @ 2020-02-19 12:11 wengle 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/swap nodes in pairs/ 2. 解题思路 1. 利用哑节点将边界case转化为一般case,比如head为NULL或者链表只有一个节点的情况都可以被转化 2. 正常情况下,依次创建三个指针:prev,p,q, 阅读全文
posted @ 2020-02-18 21:20 wengle 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/remove nth node from end of list/ 2. 解题思路 1. 利用哑节点将边界case转化为一般case 2. 倒数第n个,也就是顺数第(链表总长度 n+1)个 3. 由于需要删除顺数第(总长度 阅读全文
posted @ 2020-02-16 14:34 wengle 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/rotate list/ 2. 解题思路 1. 对于链表涉及到反转、倒置等操作,一般都需要两个指针:prev、cur 2. 根据翻转的规则,当翻转次数刚好是链表长度list_len的整数倍时,实际上翻转后的链表和未翻转的原链 阅读全文
posted @ 2020-02-15 19:08 wengle 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/remove duplicates from sorted list/ 2. 解题思路 1. 删除链表节点会涉及到两个指针:prev指针和cur指针 3. 算法 1. prev指针和cur指针分别指向前两个节点 2. 从cu 阅读全文
posted @ 2020-02-15 14:04 wengle 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/partition list/ 2. 解题思路 1. 从头到尾的遍历天然维护着节点之间的相对位置 2. 采用两个链表分别记录小于x和大于等于x的节点 3. 算法 1. left_dummy和right_dummy分别代表两个 阅读全文
posted @ 2020-02-15 13:37 wengle 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/reverse linked list ii/ 2. 解题思路 1. 采用头插法进行反转 2. 利用哑节点将边界case转化为一般case 3. 算法 1. head2指针用于进行头插操作的头部指针 2. 首先,将head2 阅读全文
posted @ 2020-02-14 20:56 wengle 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 1. 原题链接:https://leetcode.com/problems/reverse linked list/ 2. 解题思路 1. 注意:一般情况下,反转操作需要有两个指针 2. 递归思路 1. 递归类似于栈操作的入栈和出栈,关键在于入栈哪些数据? 2. 针对这道题目,由于是反转操作,所以需 阅读全文
posted @ 2020-02-14 20:25 wengle 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 主要说明Linux内核中单链表操作的关键思想,需要注意的地方 1. 假设 1. 为了说明关键思想,对数据结构进行了精简 2. 数据结构定义 3. 链表操作 3.1 创建链表 1. 关键思想:链表实际上是通过next指针链接起来的,所以只需要控制next指针里存储什么地址,就可以建立节点之间的链接关系 阅读全文
posted @ 2020-02-11 19:13 wengle 阅读(469) 评论(0) 推荐(0) 编辑