您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页算法村-----合并链表(白银)

算法村-----合并链表(白银)

来源:华佗养生网

问题:

两个链表list1和list2,它们包含的元素分别为n个和m个,请你将list1中下标从a到b的节点删除,并将list2接在被删除的位置

 

 

方式一:创建一个新的链表,把节点放进去

思路分析:

代码实现:

public static Node deleteAndMergeLinked(Node list1, Node insertList, int a, int b) {
        //思路一:新建一个链表,循环找到位置a,b,删除a-b的节点,并把insertList插入位置a,b中
        if (list1 == null) return null;
        if (insertList == null) return list1;
        int length = ListNodeUtils.getLength(list1);
        if (!(a < length && a > 0) || !(b > a && b <= length)) {
            System.out.println("a或b的位置不合法");
            return list1;
        }
        Node pNode = new Node(-1);
        Node current = pNode;
        int count = 1;//表示当前位置序号
        while (count < a) {
            current.next = list1;
            list1 = list1.next;
            current = current.next;
            count++;
        }
        current.next = insertList;
        while (count <= b) {
            list1 = list1.next;
            count++;
        }
        while (current != null) {
            if (current.next == null) {
                current.next = list1;
                list1 = null;
            }
            current = current.next;
        }

        return pNode.next;

    }

方法二:用不同的变量保存每个要保留的部分,然后首尾相就行

思路分析:

保存每个需要留下来的链表,成3个链表,分别首尾相连,在组成一个链表

代码实现:

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务