题目:两两交换链表中的节点
样例:给出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,才能避免对一个节点进行了两次操作。