**質問:リンクリストが与えられた場合、その中の隣接ノードを1つずつ交換し、交換されたリンクリストを返します。
ノードの内部値を単に変更するだけでなく、実際にノードを交換する必要があります。
例:
1-> 2-> 3-> 4の場合、2-> 1-> 4-> 3を返す必要があります。
ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/swap-の
著作権ペアのノードはLingkouネットワークに属しています。商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。**
アイデア:リンクリストの新しいヘッドポインターを作成します。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head){
struct ListNode *p=NULL,*pnext=NULL;
if(!head)
return head;
if(head!=NULL){
struct ListNode *front_head = (struct ListNode*)malloc(sizeof(struct ListNode));
front_head->next=head;
p=front_head;
while(p->next!=NULL&&p->next->next!=NULL){
pnext=p->next;
p->next=pnext->next;
pnext->next=pnext->next->next;
p->next->next=pnext;
p=pnext;
}
return front_head->next;
}
return;
}