温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

两两交换链表中的节点示例

发布时间:2021-06-22 15:29:53 来源:亿速云 阅读:129 作者:chen 栏目:大数据

这篇文章主要讲解了“两两交换链表中的节点示例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“两两交换链表中的节点示例”吧!

  • 自己解题第一次 (超时了)

public ListNode swapPairs(ListNode head) {
        ListNode curr = head;
        while (curr != null) {
            ListNode next = curr.next.next;
            if (next != null) {
                ListNode temp = curr;
                curr = next;
                curr.next.next = temp;
            }
        }
        return curr;
    } 

  • 自己第二次解题(超时 错误)

  public ListNode swapPairs(ListNode head) {
        ListNode curr = head;
        ListNode pre = head.next;
        while (curr != null && pre != null) {
            ListNode a = curr;
            ListNode b = curr.next;
            // 修改当前节点的指针指向前一个节点
            a.next = pre;
            pre.next = b;
            curr = b.next;
            pre = b;
        }
        return pre;
    }

  • 读分析之后的答案

public ListNode swapPairs(ListNode head) {
    // 创建一个空节点 默认指向头指针
   ListNode pre = new ListNode(0);
   pre.next = head;
   // temp指向第一个node
   ListNode temp = pre;
   while(temp.next != null && temp.next.next !=null){
       // 要交换的元素
       ListNode a = temp.next;
       // 要交换元素的下一个元素
       ListNode b = temp.next.next;
        //temp指向b
       temp.next = b;
       // a指向b.next
       a.next = b.next;
       // b指向a
       b.next = a;
       // 将交换完的a节点 变成起始节点
       temp = a;
   }
   //  ???? 这个返回值还是不理解 先跳过
   return pre.next;

}

感谢各位的阅读,以上就是“两两交换链表中的节点示例”的内容了,经过本文的学习后,相信大家对两两交换链表中的节点示例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI