Leetcode: Swap Nodes in Pairs
2014-01-02 23:58
218 查看
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.
比较简单,指针操作。
/**
* 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 == NULL || head->next == NULL) {
return head;
}
ListNode *first = head;
ListNode *second = head->next;
ListNode *newhead = second;
ListNode *tmp = NULL;
ListNode *prev = NULL;
while (first != NULL && second != NULL) {
tmp = second->next;
second->next = first;
first->next = tmp;
if (prev != NULL) {
prev->next = second;
}
prev = first;
first = tmp;
if (tmp != NULL) {
second = tmp->next;
}
}
return newhead;
}
};
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.
比较简单,指针操作。
/**
* 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 == NULL || head->next == NULL) {
return head;
}
ListNode *first = head;
ListNode *second = head->next;
ListNode *newhead = second;
ListNode *tmp = NULL;
ListNode *prev = NULL;
while (first != NULL && second != NULL) {
tmp = second->next;
second->next = first;
first->next = tmp;
if (prev != NULL) {
prev->next = second;
}
prev = first;
first = tmp;
if (tmp != NULL) {
second = tmp->next;
}
}
return newhead;
}
};
相关文章推荐
- leetcode 第22-24题Merge k Sorted Lists & Swap Nodes in Pairs & Reverse Nodes in k-Group
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
- [LeetCode]Swap Nodes in Pairs
- [leetcode][list] Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- leetcode-24. Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- LeetCode | Swap Nodes in Pairs
- 【leetcode】Swap Nodes in Pairs (middle)
- leetcode 24. Swap Nodes in Pairs
- 【LeetCode】Swap Nodes in Pairs
- LeetCode 24. Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs
- LeetCode2.2.8(Swap Nodes in Pairs)
- 24. Swap Nodes in Pairs LeetCode
- 【LeetCode从零单刷】Swap Nodes in Pairs
- leetcode 24. Swap Nodes in Pairs \ 21. Merge Two Sorted Lists
- [LeetCode] Swap Nodes in Pairs
- LeetCode-24.Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs