[LeetCode] 24. Swap Nodes in Pairs
2016-07-18 23:58
363 查看
思路:
用三个指针进行操作. 现将两个指针指向当前的节点对, 然后将上一个节点对和当前节点对连接好, 然后交换当前节点对的位置, 最后做一些为下一轮指针处于正常位置的的准备工作. 详细看注释.
用三个指针进行操作. 现将两个指针指向当前的节点对, 然后将上一个节点对和当前节点对连接好, 然后交换当前节点对的位置, 最后做一些为下一轮指针处于正常位置的的准备工作. 详细看注释.
ListNode* swapPairs(ListNode* head) { if (! head || ! head->next) return head; ListNode* cur = head; // 当前节点, 一般指向节点对的后一个节点 ListNode* prev1 = NULL; // 前节点, 一般指向节点对的前一个节点 ListNode* prev2 = NULL; // 前前节点, 一般指向上一对节点对的后一个节点 while (cur && cur->next) { // 挪到新的一对节点处 prev1 = cur; cur = cur->next; // 更新头结点 if (prev1 == head) head = cur; // 将上一对的尾节点和当前头结点连在一起 if (prev2) prev2->next = cur; ListNode* pNext = cur->next; // 交换当前这对节点的顺序 cur->next = prev1; prev1->next = pNext; // 前前指针指向当前节点对的尾节点, 为下轮循环连接下一个首节点做准备 prev2 = prev1; // cur挪到下一对的首节点 cur = pNext; } return head; }
相关文章推荐
- [C/C++]反转链表
- 关于指针的一些事情
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C# Pointer指针应用实例简述
- C和指针小结(推荐)
- C++智能指针实例详解
- 浅谈C++指针(必看)
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅谈c/c++中使用指针需要注意的问题
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- C++编程指向成员的指针以及this指针的基本使用指南
- 详解C++中的指针、数组指针与函数指针
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析