leetcode24
题目:
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定1->2->3->4
, 你应该返回2->1->4->3
.
解题思路:
奇数位置的结点与偶数位置的结点进行交换,如果链表有奇数个结点,则最后一个结点不用管。注意,用一个假头节点dummy可以避免最后找不到链表的头。
代码:
class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* dummy = new ListNode(-1); dummy->next = head; ListNode* cur = dummy; while(cur->next && cur->next->next){ ListNode* t = cur->next->next; cur->next->next = t->next; t->next = cur->next; cur->next = t; cur = t->next; } return dummy->next; } };