LeetCode----两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

说明:

  • 你的算法只能使用常数的额外空间。
  • 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

代码如下:

public class LeetCode24 {
	public static class ListNode {
		int val;
		ListNode next;

		ListNode(int x) {
			val = x;
		}
	}

	public ListNode swapPairs(ListNode head) {
		if (head == null || head.next == null) {
			return head;
		}
		ListNode cur = head;
		ListNode next = head;
		ListNode nextN = head;
		ListNode root = head.next;
		ListNode prev = null;
		while (cur != null) {
			if (cur.next == null) {
				prev.next = cur;
				break;
			}
			next = cur.next;
			nextN = next.next;
			next.next = cur;
			cur.next = null;
			if (prev != null) {
				prev.next = next;
			}
			prev = cur;
			cur = nextN;
		}

		return root;
	}
}

  

posted @ 2018-05-28 19:32  Booker808  阅读(158)  评论(0编辑  收藏  举报