你存在,我深深的脑海里~
题目:
示例:
思路:
这个题有点类似于反转一个单链表,不同的地方在于这个题不全反转,所以我们不同的地方在于此题多用了一个prve指针保存n1的前一个节点,以及头的改变,用newhead保存一个新的头,其他都大同小异,参考:反转一个单链表
代码:
struct ListNode* swapPairs(struct ListNode* head) { if (head == NULL) return NULL; struct ListNode* newhead = head; struct ListNode* n1 = head; struct ListNode* n2 = NULL; struct ListNode* n3 = NULL; struct ListNode* prve = NULL; while (n1 && n1->next) { n2 = n1->next; n3 = n2->next; if (n1 == head) { n1->next = n2->next; n2->next = n1; newhead = n2; } else { n1->next = n2->next; n2->next = n1; prve->next = n2; } prve = n1; n1 = n3; } return newhead; }