1.定义节点

复制代码
public class ListNode {
    int val;
    ListNode next;

    public ListNode() {
    }

    public ListNode(int val) {
        this.val = val;
    }

    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}
复制代码

2.操作生成链表

复制代码
class MyLinkedList {
    int size=0;
    ListNode head;

    public MyLinkedList() {
        head=new ListNode(0);//长度+1,计算的时候要加上


    }
    
    public int get(int index) {
        if(index<0||index>=size)
        return -1;
        ListNode cur=head;
        for(int i=0;i<=index;i++){
            cur=cur.next;
        }
        return cur.val;

    }
    
    public void addAtHead(int val) {
        addAtIndex(0,val);

    }
    
    public void addAtTail(int val) {
        addAtIndex(size,val);

    }
    
    public void addAtIndex(int index, int val) {
        if(index>size)return;
        if(index<0)index=0;
        size++;
        ListNode pre=head;
        for(int i=0;i<index;i++){
            pre=pre.next;
        }
        ListNode temp=new ListNode(val);
        temp.next=pre.next;
        pre.next=temp;
        

    }
    
    public void deleteAtIndex(int index) {
        if(index<0||index>=size)return;
        size--;
        ListNode pre=head;
        for(int i=0;i<index;i++){
            pre=pre.next;

        }
        pre.next=pre.next.next;

    }
}
复制代码

3.合并操作

复制代码
public class Solution1 {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode dummy=new ListNode(-1),p=dummy;
        ListNode p1=list1,p2=list2;
        while(p1!=null&&p2!=null){
            if(p1.val<p2.val){
                p.next=p1;
                p1=p1.next;

            }else{
                p.next=p2;
                p2=p2.next;
            }
            p=p.next;
        }
        if(p1!=null){
            p.next=p1;
        }
        if(p2!=null){
            p.next=p2;
        }
        return dummy.next;


    }
    public static void main(String[] args){

        MyLinkedList list1 = new MyLinkedList();
        MyLinkedList list2 = new MyLinkedList();
        list1.addAtTail(1);
        list1.addAtTail(2);
        list2.addAtTail(1);
        list2.addAtTail(3);

        Solution1 solution = new Solution1();
        ListNode listNode = solution.mergeTwoLists(list1.head.next, list2.head.next);
        while (listNode!=null){
            System.out.println(listNode.val);
            listNode=listNode.next;
        }
    }
}
复制代码

 

posted on   upupup-999  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2022-01-29 Hystrix熔断器的使用



点击右上角即可分享
微信分享提示