Swap Nodes in Pairs

来源:互联网 发布:大数据聚类分析 编辑:程序博客网 时间:2024/05/29 09:16

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.

交换链表相邻节点的值。

解题思路:每两个节点的交换过程分成三步:先把辅助节点的指针指向第二个节点,然后第一个节点的指针指向第三个节点

最后第二个节点的指针指向第一个节点



/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {       if (head == null ) {//如果链表为空,返回空    return null;}    if (head.next == null) {//如果链表有一个节点,则返回头节点return head;}    ListNode dummy = new ListNode(0);//创建辅助节点dummy.next = head;        ListNode first = dummy;        ListNode cur = head;                while (cur != null && cur.next != null) {            //节点间的next值交换first.next = cur.next;cur.next = cur.next.next;first.next.next = cur;//重新设置新的开始位置first = cur;cur = cur.next;}        //返回链表的头节点        return dummy.next;    }}


0 0
原创粉丝点击