/**
* 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)
return nullptr;
ListNode headd(-1);
headd.next = head;
ListNode *p,*n1,*n2;
p = &headd;
while(p && p->next && p->next->next)
{
n1 = p->next;
n2 = p->next->next;
p->next = n2;
n1->next = n2->next;
n2->next = n1;
p = p->next->next;
}
return headd.next;
}
};
这个题是为了交换相邻两个节点的数值,最后返回头节点,但是开始读题的时候在想如果是奇数的节点数怎么办。。然后发现如果是奇数最后一个节点就不用管了。在编写的时候while循环里面写成了while(p->next->next&&p->next&&p)疯狂报错。因为有种情况p已经是空了,所以p->next就一定会报错,把顺序放正就好了。
转载请注明原文地址: https://ju.6miu.com/read-22760.html