zoukankan      html  css  js  c++  java
  • 什么是链表

    模拟链表:

    Node(节点):

    package com.javaSe.List;
    /*
    单链表中的节点。
    节点是单向链表中的基本单元。
    每一个节点Node都有两个属性:
        一个属性:是存储的数据
        另一个属性:是下一个节点的内存地址
    */
    public class Node {
        // 存储的数据
        Object date;
        
        // 下一个节点的内存地址
        Node next;
        
        
        public Node(){
        
        }
        
        public Node(Object date,Node next){
            this.date = date;
            this.next = next;
        }
    }

    链表:

    package com.javaSe.List;
    
    
    public class Link<E> {
        public static void main(String[] args) {
            Link<String> link = new Link<>();
            // 只能传String类型。
            link.add("abc");
            
            // 类型不匹配
            // link.add(123);
        }
        
        // 头节点
        Node header = null;
        
        int size = 0;
        
        public int size(){
            return size;
        }
        
        // 向链表中添加元素的方法(向末尾添加)
        // public void add(Object date){
        public void add(E date){
            // 创建一个新的节点对象
            // 让之前单链表的末尾节点next指向新节点对象。
            // 有可能这个元素是第一个,也可能是第二个,也可能是第三个
            if (header == null){
                // 说明还没有节点
                // new 一个新的节点作为头节点
                // 这个时候的头节点既是一个头节点,又是一个尾结点
                header = new Node(date,null);
            } else {
                // 说明头不是空
                // 头节点已经有了
                // 找出当前末尾节点,让当前末尾节点的next是新节点。
                Node currentLastNode = findLast(header);
                currentLastNode.next = new Node(date,null);
            }
            size++;
        }
        
        /**
         * 专门查找末尾节点的方法
         * @return
         */
        private Node findLast(Node node) {
            if(node.next == null){
                // 如果一个节点的next是null
                // 说明这个节点就是末尾节点
                return node;
            }
            // 程序能够到这里说明:node不是末尾节点。
            return findLast(node.next); // 递归算法
        }
        
        // 删除链表中某个数据的方法
        public void remove(Object obj){
        
        }
        
        // 修改链表中某个数据的方法
        public void modify(Object obj){
        
        }
        
        // 查找链表中某个元素的方法
        public int find(Object obj){
            return 1;
        }
    }

    测试类:

    package com.javaSe.List;
    
    
    public class NodeTest {
        public static void main(String[] args) {
            // 创建了一个集合
            Link link = new Link();
            // 往集合中添加元素
            link.add(100);
            link.add(200);
            link.add(300);
            
            // 获取元素的个数
            System.out.println(link.size());
        }
    }
  • 相关阅读:
    java-泛型及上界下界详解
    【CSDN】Spring+Spring MVC+Mybatis实战项目之云笔记项目
    mybatis
    spring笔记-spring mvc表单
    spring笔记-第一个spring mvc 项目
    巡风源码阅读与分析---AddPlugin()方法
    巡风源码阅读与分析---view.py
    BUGKUctf-web-writeup
    陕西省网络空间安全技术大赛部分题目writeup
    “百度杯”CTF比赛(二月场)-web-writeup
  • 原文地址:https://www.cnblogs.com/xlwu/p/13415687.html
Copyright © 2011-2022 走看看