技巧 - 链表操作
合并两个有序链表
- 148. 排序链表
- 25. K 个一组翻转链表
- 707. 设计链表
- 使用二级指针来标记前驱节点的next地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24ListNode* merge(ListNode* l, ListNode* r)
{
ListNode* head = ((l->val <= r->val) ? l : r);
ListNode** prev_ptr = &head;
while(l && r)
{
if (l->val <= r->val)
{
*prev_ptr = l;
prev_ptr = &l->next;
l = l->next;
}
else
{
*prev_ptr = r;
prev_ptr = &r->next;
r = r->next;
}
}
while (l) {*prev_ptr = l; prev_ptr = &l->next; l = l->next;}
while (r) {*prev_ptr = r; prev_ptr = &r->next; r = r->next;}
/* return ptr of head !!! */
return head;
}
- 使用二级指针来标记前驱节点的next地址
获取下标为index的节点值
1 | |
技巧 - 链表操作
http://example.com/2024/10/15/算法刷题/技巧 - 链表操作/