zoukankan      html  css  js  c++  java
  • 【数据结构与算法】链表——两两交换链表中的结点

    两两交换链表中的结点

    LeetCode:两两交换链表中的结点

    题目描述:

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

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

    示例:

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

    思想:

    没啥思想,一个递归,一个循环,两种方法,注意熟练掌握。

    代码

    • 递归
    private ListNode swapPairsImpl(ListNode L){
        if(L.next==null) return null;
        if(L.next.next == null) return L.next;
        ListNode p = L.next,q=p.next;
        p.next = swapPairsImpl(q);
        L.next = q;
        q.next = p;
        return q;
    }
    public ListNode swapPairs(ListNode head) {
        ListNode L =new ListNode(-1);
        L.next = head;
        return swapPairsImpl(L);
    }
    
    • 循环
    public ListNode swapPairs(ListNode head) {
        ListNode L =new ListNode(-1);
        L.next = head;
        ListNode m, p=L,q;
        while(p.next!=null&&p.next.next!=null){
            m=p;p = m.next;q=p.next;
    
            p.next = q.next;
            m.next = q;
            q.next = p;
        }
        return L.next;
    }
    
  • 相关阅读:
    面试1
    初级算法-数组1
    程序员常用单词
    SpringBoot
    JDBC
    animate.css 实现 网页滚动指定位置添加动画
    解决打包上线缓存问题
    组件之间双向绑定
    按照给定数组排序原数组
    扩展运算符... 的使用
  • 原文地址:https://www.cnblogs.com/buptleida/p/12710863.html
Copyright © 2011-2022 走看看