1. 程式人生 > >leetcode24.兩兩交換連結串列中的節點

leetcode24.兩兩交換連結串列中的節點

1.題目
給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。
2.示例:
示例:
給定 1->2->3->4, 你應該返回 2->1->4->3.
3.思路
迴圈遍歷連結串列,當只有一個節點時特殊處理。
4.程式碼
ListNode* swapPairs(ListNode* head) {
ListNode* tail=new ListNode(INT_MIN);
ListNode* newtail=tail;
ListNode* ptr=head;
while(ptr!=NULL&&ptr->next!=NULL){
ListNode* tmp=ptr->next->next;
newtail->next=ptr->next;
newtail=newtail->next;
newtail->next=ptr;
newtail=newtail->next;
newtail->next=NULL;//newtail有next節點
ptr=tmp;
}
if(ptr!=NULL) newtail->next=ptr; //處理到最後只剩一個節點
return tail->next;
}