两两交换链表中的节点
此博客链接:https://www.cnblogs.com/ping2yingshi/p/12777720.html
两两交换链表中的节点(33min)
题目链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
题解:
思路:
1.创建一个虚拟偷节点。
2.使链表头节点到达虚拟头结点位置。
3.把相邻两个数交换位置,这里采用把虚拟头节点指向第一个节点的next,然后第一个节点的next在指向第一个节点,这就完成了两个节点转换。
4.把虚拟头节点向后移动两个位置。进行后面两个相邻节点的交换。
代码如下:
class Solution { public ListNode swapPairs(ListNode head) { ListNode newhead=new ListNode(0); newhead.next=head; head=newhead; ListNode cur=head; while(cur!=null&&cur.next!=null&&cur.next.next!=null) { ListNode one=cur.next; ListNode two=one.next; cur.next=two; one.next=two.next; two.next=one; cur=cur.next.next; } return newhead.next; } }
出来混总是要还的