1.两两交换:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。【2021计专】
struct ListNode* swapPairs(struct ListNode* head)
{
typedef struct ListNode LTNode;
//设置虚拟头结点
LTNode* dummyHead = (LTNode*)malloc(sizeof(LTNode));
dummyHead->next = head;
LTNode* cur = dummyHead;
LTNode* temp;
LTNode* temp1;
while(cur->next && cur->next->next)
{
temp = cur->next;//记录临时结点temp
temp1 = cur->next->next->next;//记录临时结点temp1
cur->next = cur->next->next;//第一步
cur->next->next = temp;//第二步
cur->next->next->next = temp1;//第三步
cur = cur->next->next;// cur移动两位,准备下一轮交换
}
return dummyHead->next;
}