本来没啥。但是有个哥们在discuss区写的看不懂。。琢磨了一下,发现哥们竟然直接修改节点里的next值!!!
代码:
ListNode* swapPairs(ListNode* head) {
ListNode **pp = &head, *a, *b;
while ((a = *pp) && (b = a->next)) {
a->next = b->next;
b->next = a;
*pp = b;
pp = &(a->next);
}
return head;
}
琢磨过程如下:
(1)这是初始状态:
(2)这是完成循环前两句话之后:
(3)这是完成后两句:
注意这里指向了 地址为 01 节点的next变量。
(4)新一轮:
哥们如下:
天天都看到他的方法 好气哟