• 递增量表的创建、合并、打印


    1、链表节点类

    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    View Code

    2、链表合并类

    public class ListMerge {
        public ListNode merge(ListNode list1, ListNode list2) {
            ListNode head = null;
    
            if (list1 == null) {
                return list2;
            }
            if (list2 == null) {
                return list1;
            }
    
           //递归调用
            if (list1.val < list2.val) {
                head = list1;
                head.next = merge(list1.next, list2);
            } else {
                head = list2;
                head.next = merge(list1, list2.next);
            }
    
            return head;
    
        }
    }
    View Code

    3、链表打印类

    import java.util.ArrayList;
    import java.util.Stack;
    
    public class PrintList {
        //方式一:通过将链表所有节点存入ArrayList中,然后遍历ArrayList中输出的元素
        public void printList(ListNode head) {
            //遍历链表所有节点,存入ArrayList中
            ArrayList<ListNode> arrayList2 = new ArrayList<ListNode>();
            while (head != null) {
                arrayList2.add(head);
                head = head.next;
            }
            //输出值
            for (int i = 0; i < arrayList2.size(); i++) {
                System.out.print(arrayList2.get(i).val + " ");
            }
        }
    
        //方式二:通过将链表所有节点压入栈中,然后弹出所有节点的值,实现链表逆序打印
        public void printList2(ListNode head) {
            Stack<ListNode> stack = new Stack<ListNode>();
            //链表所有节点进栈
            while (head != null) {
                stack.push(head);
                head = head.next;
            }
            //打印栈中所有节点的值
            while (!stack.empty()) {
                System.out.print(stack.pop().val+" ");
    
            }
        }
    }
    View Code

    4、测试类(含链表创建)

    public class TestMain {
        public static void main(String[] args) {
            //创建打印链表类的对象
            PrintList p=new PrintList();
    
            //新建链表1
            ListNode head1=new ListNode(1);
            ListNode node11=new ListNode(3);
            ListNode node12=new ListNode(5);
            ListNode node13=new ListNode(7);
            head1.next=node11;
            node11.next=node12;
            node12.next=node13;
            node13.next=null;
            //打印链表1
            p.printList(head1);
            System.out.println();
    
            //新建链表2
            ListNode head2=new ListNode(2);
            ListNode node21=new ListNode(4);
            ListNode node22=new ListNode(6);
            ListNode node23=new ListNode(8);
            head2.next=node21;
            node21.next=node22;
            node22.next=node23;
            node23.next=null;
            //打印链表2
            p.printList(head2);
            System.out.println();
    
            //链表合并
            ListMerge listMerge=new ListMerge();
            ListNode head=listMerge.merge(head1,head2);
    
            //打印合并后的链表
            p.printList(head);
        }
    }
    View Code
  • 相关阅读:
    程序员的自我救赎---1.4.3: 核心框架讲解(MVC)
    程序员的自我救赎---1.4.2: 核心框架讲解(BLL&Tool)
    程序员的自我救赎---1.4.1:核心框架讲解(DAL)
    程序员的自我救赎---1.3:事务的使用
    【零基础】极星9.5量化入门一:自定义套利的K线绘制
    【零基础】神经网络实践:BeatSaber粪谱生成器(使用方法篇)
    【零基础】使用Tensorflow实现神经网络
    【零基础】神经网络优化之Adam
    【零基础】神经网络优化之动量梯度下降
    【零基础】神经网络优化之mini-batch
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7618074.html
Copyright © 2020-2023  润新知