LeetCode-24-2つの交換チェーンテーブルのノード-C言語


再帰的手法を用いて再帰的な終了条件は,チェーンテーブルが1つのノード以下であり,ヘッダノードheadおよびhead−>nextノードのみを処理し,両者を交換する.
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
typedef struct ListNode Node;

struct ListNode* swapPairs(struct ListNode* head) {
    Node *p = head;
    
    if(!head || !head->next){
        return head;
    }
    
    p = p->next;
    
    head->next = swapPairs(p->next);
    p->next = head;
    
    return p;
}