作业4.451:两两交换链表中的节点
2017-03-27 21:10
274 查看
题目:两两交换链表中的节点
样例:给出1->2->3->4,你应该返回的是2->1->4->3。
思路:首先排除空链表和只有一个节点的链表。然后设定一个temp,两两交换节点,然后再令指针指向后一个的next,以免重复操作。
代码:
class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
if (head == NULL)
return 0;
ListNode *p = head;
while (p != NULL && p->next != NULL) {
int temp;
temp = p->val;
p->val = p->next->val;
p->next->val = temp;
p = p->next->next;
}
return head;
}
};
感想:我认为,交换两个节点的值是很简单的,有一点必须注意,每两个两个进行交换,所以,当两个交换完成后,应使指针指向这两个节点中后一个的next,才能避免对一个节点进行了两次操作。
样例:给出1->2->3->4,你应该返回的是2->1->4->3。
思路:首先排除空链表和只有一个节点的链表。然后设定一个temp,两两交换节点,然后再令指针指向后一个的next,以免重复操作。
代码:
class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
if (head == NULL)
return 0;
ListNode *p = head;
while (p != NULL && p->next != NULL) {
int temp;
temp = p->val;
p->val = p->next->val;
p->next->val = temp;
p = p->next->next;
}
return head;
}
};
感想:我认为,交换两个节点的值是很简单的,有一点必须注意,每两个两个进行交换,所以,当两个交换完成后,应使指针指向这两个节点中后一个的next,才能避免对一个节点进行了两次操作。
相关文章推荐
- LintCode-两两交换链表中的节点
- 两两交换链表中的节点 - C++
- 两两交换链表中的节点
- lintcode-451-两两交换链表中的节点
- [LintCode 451] 两两交换链表中的节点(Python)
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- 两两交换链表中的节点
- 两两交换链表中的节点
- python_lintcode_737. Find Elements in Matrix_451. 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点