题目描述:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
思路:使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。
接下来就是交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序
初始时,cur指向虚拟头结点,然后进行如下三步:
/** class ListNode{ int val; ListNode next; public ListNode(int val){ this.val = val; } public ListNode(int val,ListNode9 next){ this.val = val; this.next = next; } }*/ class Solution{ public ListNode swapPairs(ListNode head){ if(head == null || head.next == null) return head; //获取当前节点的下一个节点 ListNode next = head.next; //进行递归 ListNode newNode = swapPairs(next.next); //进行交换 next.next = head; head.next = newNode; return next; } }
标签:head,ListNode,val,next,链表,Leetcode24,节点 From: https://www.cnblogs.com/zhz123567/p/17204119.html