zoukankan      html  css  js  c++  java
  • 打印两个有序链表的公共部分

    思路

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

      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 国际许可协议进行许可。

  • 相关阅读:
    C# comboBox实现省市两级联动(winform)
    Alter用法
    封装SQLHelper
    杨中科版C#射击游戏
    C# TXT文件导入至数据库
    C# 手机号码归属地查询
    C#中从数据库导出至txt
    解决C#中txt文档导入数据库时,中文显示乱码的问题
    第一篇博文与技术无关 纯瞎扯
    全国省市数据库
  • 原文地址:https://www.cnblogs.com/hoochanlon/p/9676672.html
Copyright © 2011-2022 走看看