Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)
Example 1:
Input: head = [1,2,3,4] Output: [2,1,4,3]
Example 2:
Input: head = [] Output: []
Example 3:
Input: head = [1] Output: [1]
Constraints:
- The number of nodes in the list is in the range
[0, 100]
. 0 <= Node.val <= 100
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode*dummyHead=new ListNode(0,head);
ListNode*curr=dummyHead;
while(curr->next!=NULL && curr->next->next!=NULL){
ListNode*temp1=curr->next;
ListNode*temp2=curr->next->next->next;
curr->next=curr->next->next;
curr->next->next=temp1;
temp1->next=temp2;
curr=curr->next->next;
}
return dummyHead->next;
}
};
注意:
1.curr->next->next=temp1;这行代码小心别少了一个next
2.如果要对两个链表元素进行操作,一般都需要设一个current为这两个元素前面一个元素,方便进行操作
3.要设置一些临时节点,用来保存链表,否则会丢失链表指向