正文
一、题目描述#
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 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; } * } */ class Solution { public ListNode swapPairs(ListNode head) { ListNode h,cur, pre, next; pre = head; h=pre; boolean isFirst=true; if (null != pre && null != pre.next) { cur = pre; while (null != cur && null != cur.next) { next = cur.next; cur.next = next.next; next.next = cur; if(isFirst){ pre = next; h=pre; isFirst=false; }else { pre.next = next; } //向下 pre = cur; cur=cur.next; } } return h; } }