题目:
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
public class SwapNodesPairs {
public ListNode swapPairs(ListNode head) {
if (head == null)
return head;
ListNode dummyHead = new ListNode(0);
dummyHead.next = head;
ListNode p = dummyHead;
while (p.next != null && p.next.next != null){
ListNode node1 = p.next;
ListNode node2 = p.next.next;
ListNode next = node2.next;
node2.next = node1;
node1.next = next;
p.next = node2;
p = node1;
}
return dummyHead.next;
}
}
本文介绍了一种链表操作算法,旨在通过调整链表中节点的位置,实现每两个相邻节点的互换,而不改变节点内的值。示例中,输入链表1->2->3->4将被转换为2->1->4->3。文章提供了完整的Java代码实现,展示了如何使用虚拟头节点简化边界条件处理,并通过迭代方式完成节点的交换。
955

被折叠的 条评论
为什么被折叠?



