考察指针的使用,但是写的过程中遇到一些问题,主要是写之前没想清需要用到哪些额外的指针。
最后解决方案里有4个指针,result记录结果,tmp1和tmp2分别记录前后两个要交换的指针,next记录下面一组指针的第一个指针。解决办法比较笨,应该有简洁的方法,第二遍刷的时候细究吧。
ListNode *swapPairs(ListNode *head) { // Start typing your C/C++ solution below // DO NOT write int main() function if(head == NULL || head->next == NULL) return head; ListNode *result = head->next; ListNode *tmp1 = head, *tmp2 = head->next; while(tmp2 != NULL){ tmp1->next = tmp2->next; tmp2->next = tmp1; if(tmp1->next == NULL || tmp1->next->next == NULL) tmp2 = NULL; else tmp2 = tmp1->next->next; ListNode *next = tmp1->next; if(tmp2 != NULL) tmp1->next = tmp2; tmp1 = next; } return result; }