标签:
题目:
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.
代码:
/** * 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 dummy(-1); dummy.next = head; ListNode *prev = &dummy; ListNode *curr = head; while ( curr && curr->next ) { prev->next = curr->next; curr->next = curr->next->next; prev->next->next = curr; prev = curr; curr = curr->next; } return dummy.next; } };
Tips:
链表基本操作,动手画图,直接出来。
标签:
原文地址:http://www.cnblogs.com/xbf9xbf/p/4468079.html