赞
踩
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
//Definition for singly-linked list.
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
1、创建记录结果的头结点(头结点不记录数据,便与循环)和记录上次遍历结果的最后节点;
2、只要链表中存在两个或两个以上的数据就执行以下循环:
3、节点交换后,一次跳过两个节点继续循环;
4、返回的结果为result.next(result头结点不记录数据)。
public ListNode swapPairs(ListNode head) { //记录结果的头结点 ListNode result = new ListNode(0); result.next = head; //记录上次遍历结果的最后节点(下次的头节点) ListNode pre = result; while(head != null && head.next != null){ //保存 ListNode temp = head.next.next; pre.next = head.next; head.next.next = head; head.next = temp; head = temp; pre = pre.next.next; } return result.next; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。