美文网首页
Swap Nodes in Pairs

Swap Nodes in Pairs

作者: Ukuleler | 来源:发表于2019-10-14 16:27 被阅读0次
捕获3.PNG

这道题就是考验指针操作,难度不高,主要就是考验链表操作基本功
代码如下

public class swapPairs {
    public static class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }

    public static ListNode swapPairs(ListNode head) {
        if(head==null || head.next==null)return head;
        ListNode p1 = head;
        ListNode p2 = head;
        ListNode cur = head;
        int count=1;
        while(cur.next!=null){
            //指针后移
            p1=p2;
            p2=cur;
            cur=cur.next;
            count++;
            if(count%2==0){
                //偶数的时候开始计算
                if(count<=2){
                    //首位需要特殊处理
                    p2.next=cur.next;
                    cur.next=p2;
                    head = cur;
                }else{
                    p2.next=cur.next;
                    p1.next=cur;
                    cur.next=p2;
                }
                //指针复位
                ListNode temp = p2;
                p2 = cur;
                cur = temp;
            }
        }
        return head;
    }

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode l2 = new ListNode(2);
        ListNode l3 = new ListNode(3);
        ListNode l4 = new ListNode(4);
        ListNode l5 = new ListNode(5);
        ListNode l6 = new ListNode(6);
        l1.next=l2;
        l2.next=l3;
        l3.next=l4;
        l4.next=l5;
        l5.next=l6;
        ListNode r = swapPairs(l1);
        while(r!=null){
            System.out.print(r.val+"->");
            r=r.next;
        }
    }
}

相关文章

网友评论

      本文标题:Swap Nodes in Pairs

      本文链接:https://www.haomeiwen.com/subject/piirmctx.html