LeetCode Swap Nodes in Pairs交换链表中的两个节点
2013-11-30 08:38
567 查看
Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
入门题,注意:
1 保存next节点
2 需要使用三个节点指针
3 保存好链表头指针
2014-1-25 update
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
1->2->3->4, you should return the list as
2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
入门题,注意:
1 保存next节点
2 需要使用三个节点指针
3 保存好链表头指针
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *swapPairs(ListNode *head) { if (!head || !head->next) return head; ListNode *pre = head->next; ListNode *cur = pre->next; pre->next = head; head->next = cur; head = pre; pre = pre->next; while (pre) { ListNode *post; cur = pre->next; if (cur && cur->next) post = cur->next; else break; pre->next = post; pre = post->next; post->next = cur; cur->next = pre; pre = cur; } return head; } };
2014-1-25 update
ListNode *swapPairs(ListNode *h) { ListNode dummy(0); dummy.next = h; ListNode *pre = &dummy; while (h && h->next) { ListNode *t = h->next->next; pre->next = h->next; h->next->next = h; h->next = t; pre = h; h = t; } return dummy.next; }
相关文章推荐
- (Java) LeetCode 24. Swap Nodes in Pairs —— 两两交换链表中的节点
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- LeetCode-24 Swap Nodes in Pairs(链表中按要求交换节点)
- LeetCode | Swap Nodes in Pairs(将链表中的元素两两交换)
- 【leetcode】24. Swap Nodes in Pairs - 成对交换链表元素
- Swap Nodes in Pairs --成对交换链表节点(重重重)
- 451. 两两交换链表中的节点(swap-nodes-in-pairs)(c++)----lintcode面试题之链表
- LeetCode 24. Swap Nodes in Pairs(交换节点)
- Swap Nodes in Pairs(交换链表相邻的两个结点)
- [LeetCode] 24. Swap Nodes in Pairs 成对交换节点
- 【链表&交换邻节点】Swap Nodes in Pairs
- Swap Nodes in Pairs 链表交换相邻的节点
- LeetCode 24. Swap Nodes in Pairs ***** 双节点交换
- [LeetCode] Swap Nodes in Pairs(成对交换节点)
- [leetcode] 24 Swap Nodes in Pairs(交换链表相邻结点)
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
- leetCode 24. Swap Nodes in Pairs (双数交换节点) 解题思路和方法
- LeetCode - 24 - Swap Nodes in Pairs(交换链表结点)
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- LeetCode 24 Swap Nodes in Pairs (交换相邻节点)