美文网首页
链表的几个问题

链表的几个问题

作者: 啊磊11 | 来源:发表于2021-03-10 22:28 被阅读0次

//链表两数相加->从头节点开始是个位依次为十百千

public static LinkedLISTsumLink(LinkedLIST heada, LinkedLIST headb){

LinkedLIST dummy =new LinkedLIST(-1,null);

    LinkedLIST curr = dummy;

    int carry =0;

    while (heada !=null || headb !=null || carry !=0){

int avalue = heada ==null?0:heada.value;

        int bvalue = headb ==null?0:headb.value;

        int k = (avalue + bvalue + carry)%10;

        carry =  (avalue + bvalue + carry)/10;

        LinkedLIST node =new LinkedLIST(k,null);

        curr.next = node;

        curr =curr.next;

        if(heada !=null){

heada = heada.next;

        }

if(headb !=null){

headb = headb.next;

        }

}

return dummy.next;

}

//删除链表的倒数第N个节点

public static LinkedLISTdeleteNodeN(LinkedLIST head,int N){

LinkedLIST dummy =new LinkedLIST(-1,null);

    dummy.next = head;

    LinkedLIST curr = dummy;

    LinkedLIST fast = head;

    int k =1;

    while (k<=N){

fast = fast.next;

    }

while (fast !=null){

fast = fast.next;

        curr = curr.next;

    }

curr.next = curr.next.next;

    return dummy.next;

}

//合并两个有序的链表

public static LinkedLISThebing(LinkedLIST heada, LinkedLIST headb){

if(heada ==null){

return  headb;

    }

if(headb ==null){

return  heada;

    }

if(heada.value

heada.next =hebing(heada.next,headb);

        return heada;

    }else {

headb.next =hebing(heada,headb.next);

        return  headb;

    }

}

//合并K个升序链表

public static LinkedLISThebingk(ArrayList lists){

if(lists.size() ==1){

return lists.get(0);

    }

if(lists.size() ==2){

return hebing(lists.get(0),lists.get(1));

    }else{

LinkedLIST atemp = lists.get(0);

        lists.remove(0);

        return hebing(atemp,hebingk(lists));

    }

}

//反转链表

public static LinkedLISTreverse(LinkedLIST heada){

if(heada ==null){

return null;

    }

LinkedLIST curr = heada;

    LinkedLIST pre =null;

    LinkedLIST next =null;

    while (curr !=null){

next = curr.next;

        curr.next = pre;

        pre = curr;

        curr = next;

    }

return  pre;

}

public static LinkedLISTreverse2(LinkedLIST head){

if(head ==null){

return head;

    }

LinkedLIST newhead =reverse2(head.next);

    head.next.next = head;

    head.next =null;

    return  newhead;

}

//反转前K个数莲表

public static LinkedLISTcurror =null;

public static LinkedLISTreversek(LinkedLIST head,int k){

if(k ==1){

curror = head.next;

      return head;

    }

LinkedLIST newhead =reversek(head.next,k-1);

    head.next.next = head;

    head.next =curror;

    return newhead;

}

//K个一组去反转链表

public static LinkedLISTreverseKgroup(LinkedLIST head, int k){

LinkedLIST curr = head;

    for(int i =0;i

curr = curr.next;

    }

LinkedLIST newhead =reversek(head, k);

    head.next =reverseKgroup(curr,k);

    return newhead;

}

相关文章

  • 链表的几个问题

    //链表两数相加->从头节点开始是个位依次为十百千 public static LinkedLISTsumLink...

  • 链表的理解和使用

    前言 本篇文章主要解决如下几个问题: 链表和数组相比有哪些不同点?它的优缺点是什么? 链表有哪些类别?它们各自的优...

  • 数据结构-散列表(下)

    为什么散列表和链表经常会一起使用? 今天,我们就来看看,在这几个问题中,散列表和链表都是如何组合起来使用的,以及为...

  • 【老实李】HashMap的底层原理探索

    通过几个问题来学习HashMap 前提大家都知道,HashMap是由哈希表实现的,哈希表就是由数组和链表组成的。 ...

  • 五、双向链表

    双向链表 此前介绍的链表,也叫做单向链表使用双向链表可以提升链表的综合性能 修改之前的单链表的源码: 双向链表 –...

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 链表

    链表 单链表反转链表中环的检测两个有序链表合并删除链表倒数第n个节点求链表的元素总个数 一.单向链表 链表共有特征...

  • 数据结构——链表

    本文所讲的链表是单链表,链表采用无头链表 科普下:一般链表可以分为有头节点的链表与无头节点的链表 有头节点的链表:...

  • 算法与数据结构:链表

    链表 链表还分为单向链表和双向链表, 但是这篇文章只说单向链表 , 下次再讲双向链表 . 链表和数组的区别 ? 链...

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

网友评论

      本文标题:链表的几个问题

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