两两交换链表中的节点(中等)
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
struct ListNode
{
int val;
ListNode *next;
ListNode(int x): val(x), next(nullptr) {}
};
class Solution
{
public:
ListNode* swapPairs(ListNode* head)
{
ListNode *newNode = new ListNode(-1);
ListNode *prev = newNode;
prev->next = head;
while(head && head->next)
{
prev->next = head->next;
prev = prev->next;
head->next = prev->next;
prev->next = head;
head = head->next;
prev = prev->next;
}
return newNode->next;
}
};