Java的指针巩固练习2.
背景: 交换一个链表中,连续的两个节点的位置。比如:
1->2->3->4
返回
2->1->4->3
.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public static ListNode swapPairs(ListNode head){
if(head == null || head.next == null)return head;
ListNode dummy = new ListNode(0);
ListNode l = head.next;
dummy.next = head;
while(dummy.next != null && dummy.next.next != null){
ListNode first = dummy.next;
ListNode second = dummy.next.next;
first.next = second.next;
second.next = first;
dummy.next = second;
dummy = dummy.next.next;
}
return l;
}
首先我们需要一个多余的节点来存储要交换的
两个节点的第一个节点上一级
, 然后对着两个节点进行交换, 再完成两个节点的交换
之后
, 我们需要将之前存储的第一个节点的上一级进行赋值,使其指向交换后的第一个节点,(这个过程很重要,如果缺失了这一过程,那么我们将丢失链接)。 然后就这个多余节点赋值为交换之后的第二个节点,也就是为下一次的交换做准备!
版权声明:本文为YtdxYHZ原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。