Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
对一个链表中的节点两两交换
非递归 递归都写出来了 递归比非递归的快很多
让第二个节点指向第一个节点 返回第二个节点 和前面的进行连接
public ListNode swapPairs(ListNode head) {
if (head == null || head.next == null) return head;
ListNode second = head.next;
head.next = swapPairs(head.next.next);
second.next = head;
return second;
}迭代式 public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode current = dummy;
while (current.next != null && current.next.next != null) {
ListNode first = current.next;
ListNode second = current.next.next;
first.next = second.next;
current.next = second;
second.next = first;
current = second.next;
}
return dummy.next;
}
本文介绍了一种链表操作的方法:两两交换相邻节点。提供了两种实现方式,一种是递归方法,另一种是非递归的迭代方法。递归方法通过调整指针使第二个节点指向第一个节点,并返回调整后的头节点;迭代方法则使用虚拟头节点简化边界条件,通过循环逐个交换节点对。
522

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



