zoukankan      html  css  js  c++  java
  • 链表节点两两交换

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

    你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

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

    public static ListNode swapParis(ListNode head){
            /*声明一个哑节点*/
            ListNode dumb=new ListNode(0);
            /*哑节点的下一个节点指向头节点*/
            dumb.next=head;
            /*声明一个引用指向哑节点*/
            ListNode temp=dumb;
            /*如果哑节点的下一个节点和下下一个节点不为空继续转换*/
            while (dumb.next!=null&&dumb.next.next!=null){
                /*要转换的第一个节点(称为curr)*/
                ListNode curr=dumb.next;
                /*要转换的第二个节点(称为next)*/
                ListNode next=dumb.next.next;
                /*指定curr的下一个是next的下一个*/
                curr.next=next.next;
                /*指定next的下一个是curr*/
                next.next=curr;
                /*指定哑节点的下一个是next*/
                dumb.next=next;
                /*哑节点引用指向哑节点的下下一个节点*/
                dumb=dumb.next.next;
            }
            /*返回哑节点的没改变引用的下一个节点*/
            return temp.next;
        }
    View Code

    代码中有注释。

  • 相关阅读:
    学习SpringMVC——从HelloWorld开始
    线性队列
    线性表之链表
    线性表之顺序表
    nextSibling 属性与 nextElementSibling 属性的异同
    JavaScript数组增删方法总结
    class关键字
    JS三座大山_单线程&EventLoop
    JS三座大山_闭包
    JS三座大山_原型与原型链
  • 原文地址:https://www.cnblogs.com/wuyouwei/p/11775842.html
Copyright © 2011-2022 走看看