给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
示例:
给定1->2->3->4
, 你应该返回2->1->4->3
创建一个新节点指向当前头节点,交换时新节点next指向当前节点的下一个节点,当前节点的下一个节点next指向当前节点,当前节点next指向当前节点的下一个节点,此时当前节点位置已调换,新节点=当前节点的地址,当前节点指向下一个节点,依次循环。
ListNode* swapPairs(ListNode* head) {
ListNode* pnewhead = new ListNode(0);
ListNode* plast;
ListNode* pcurrent;
ListNode* ptemp;
if(head == NULL)
{
return head;
}
pnewhead->next = head;
plast = pnewhead;
pcurrent = head;
while(pcurrent != NULL && pcurrent->next != NULL)
{
plast->next = pcurrent->next;
ptemp = pcurrent->next->next;
pcurrent->next->next = pcurrent;
pcurrent->next = ptemp;
plast = pcurrent;
pcurrent = pcurrent->next;
}
return pnewhead->next;
}