两两交换链表中的节点——力扣24

题目描述

两两交换链表中的节点——力扣24_第1张图片
两两交换链表中的节点——力扣24_第2张图片

方法一:递归

两两交换链表中的节点——力扣24_第3张图片

class Solution{
public:
	ListNode* swapPairs(ListNode* head){
		if(!head || !head->next){
			return head;
		} 
		ListNode* newHead = head->next;
		head->next = swapPairs(newHead->next);
		newHead->next = head;
		return newHead;
	}
}; 

在这里插入图片描述

方法二:迭代

两两交换链表中的节点——力扣24_第4张图片

class Solution{
public:	
	ListNode* swapPairs(ListNode* head){
		ListNode* dummy = new ListNode(0);
		dummy->next = head;
		ListNode* temp = dummy;
		while(temp->next!=NULL && temp->next->next!=NULL){
			ListNode* node1 = temp->next;
			ListNode* node2 = temp->next->next;
			temp->next = node2;
			node1->next = node2->next;
			node2->next = node1;
			
			temp = node1;
		}
		return dummy->next;
	}
};

两两交换链表中的节点——力扣24_第5张图片

你可能感兴趣的:(算法刷题笔记,链表,leetcode,数据结构,c++,算法)