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;
}