LC24-两两交换链表节点

力扣题目链接

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

可以先画出思路,步骤不能乱,否则无法交换成功

双指针写法(C)

struct ListNode* swapPairs(struct ListNode* head){
    typedef struct ListNode ListNode;
    ListNode *H=(ListNode *)malloc(sizeof(ListNode)); //创建虚拟头节点,方便整体操作
    H->next=head;
    ListNode *right=head;
    ListNode *left=H;
    while(right&&left&&right->next){
        left->next=right->next; //步骤一
        right->next=left->next->next;  //步骤二
        left->next->next=right;  //步骤三
        //进行下一轮交换
        left=right;
        right=right->next;
    }
    return H->next;
}
posted @ 2022-03-24 19:42  贝贝子  阅读(24)  评论(0编辑  收藏  举报