• 打印两个有序链表的公共部分


    思路

    先设计出一个链表模型,模拟一个链表
    难度:?

      class Node{
            public int value;
            public Node next;
            public Node(int value){
                this.value = value
            }
        }
    

    这种设计相当于一个node对象存储多个实例变量,通过node对象将value 赋值给 next 实例变量,通过不断的调用从而构成了一个个的节点。这里的 value 变量相当于 temp 的临时存储数据的空间。

    Node node1 = new  Node(1);
    node1.next = new  Node(5);
    node1.next.next = new  Node(3);
       
    Node node2 = new  Node(2);
    node2.next = new  Node(5);
    node2.next.next = new  Node(4);
    

    接着比较大小:

    • 如果 node1 的值小于 node2,则 node1 “向下移动”
    • 如果 node2 的值小于 node1,则 node2 “向下移动”
    • 相等的话,直接打印 node1 的值,并 node1、node2 一起“向下移动”

    实现

    一个编码格式不很规范,呃

    package com.test.node;
    
    import org.junit.Test;
    
    /**
     * @author lorem
     */
    public class PrintlnCommonNode {
      class Node{
            public int value;
            public Node next;
            public Node(int data){
                this.value = data;
            }
        }
    
        void PrintlnCommonNode(Node node1,Node node2){
            while (node1 != null && node2 != null){
                if (node1.value < node2.value){
                    node1 = node1.next;
                }else if(node1.value > node2.value){
                    node2 = node2.next;
                }else{
                    System.out.println(node1.value+" ");
                    node1 = node1.next;
                    node2 = node2.next;
                }
            }
        }
        //附加的打印链表节点函数
        void PrintlnNode(Node node) {
            while (node != null) {
                System.out.println(node.value + " ");
                node = node.next;
            }
        }
    
        @Test
        public void test() {
            Node node1 = new  Node(1);
            node1.next = new  Node(5);
            node1.next.next = new  Node(3);
            
            Node node2 = new  Node(2);
            node2.next = new  Node(5);
            node2.next.next = new  Node(4);
    
            PrintlnCommonNode(node1,node2);
        }
    }
    
    - The End -

    知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

  • 相关阅读:
    Linux下进程间通信的六种机制详解
    Android HAL实例解析
    socket函数
    Linux 线程浅析
    Android WiFi开发教程(一)——WiFi热点的创建与关闭
    Android蓝牙开发教程(三)——蓝牙设备相互通讯
    python数据分析入门学习笔记儿
    Oracle触发器详解
    电商检索系统总结——功能篇
    Linux内核中等待队列的几种用法
  • 原文地址:https://www.cnblogs.com/hoochanlon/p/9676672.html
Copyright © 2020-2023  润新知