首页 > 编程语言 >模拟LinkedList源码

模拟LinkedList源码

时间:2022-10-31 11:00:30浏览次数:52  
标签:Node obj LinkedList next 源码 链中 节点 public 模拟

package com.msb.test04;

/**
 * @author : liu
 * 日期:08:19:35
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Node {//节点类
    //三个属性
    //上一个元素的地址
    private Node pre;
    //当前存入的元素
    private Object obj;
    //下一个元素的地址
    private Node next;

    public Node getPre() {
        return pre;
    }

    public void setPre(Node pre) {
        this.pre = pre;
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }

    @Override
    public String toString() {
        return "Node{" +
                "pre=" + pre +
                ", obj=" + obj +
                ", next=" + next +
                '}';
    }

}
package com.msb.test04;

/**
 * @author : liu
 * 日期:08:25:24
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class MyLinkedList {
    //链中一定有一个首节点:
    Node first;
    //链中一定有一个尾结点:
    Node last;
    //计数器:
    int count=0;
    //提供一个构造器
    public MyLinkedList(){
         }
    //添加元素方法:
    public void add(Object o){
        if(first==null){//证明你添加的元素是第一个节点
            //将添加的元素封装为一个对象
            Node n = new Node();
            n.setPre(null);
            n.setObj(o);
            n.setNext(null);
            //当前链中第一个节点变为n
            first=n;
            //当前链中最后一个节点变为n
            last=n;
        }else{//已经不是第一个节点了
            //
            Node n =new Node();
            n.setPre(last);//n的上一个节点,一定是当前链中的最后一个节点last
            n.setObj(o);
            n.setNext(null);
            //当前链中的最后一个节点的下一个元素要指向n
            last.setNext(n);
            //将最后一个节点变为n
            last=n;
        }
        //链中元素数量加1
        count++;
    }
    //得到集合中元素的数量
    public int getSize(){
        return count;
    }
    //通过下标获得元素
    public Object get(int index){
        //获取链表的头元素
        Node n=first;
        //一路next得到想要的元素
        for (int i = 0; i < index; i++) {
            n = n.getNext();
        }
        return n.getObj();
    }
}
class Test{
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //创建一个集合对象
        MyLinkedList ml=new MyLinkedList();
        ml.add("aa");
        ml.add("bb");
        ml.add("cc");
        System.out.println(ml.getSize());
        System.out.println(ml.get(2));
    }
}

 

Debug验证数据添加成功

 

标签:Node,obj,LinkedList,next,源码,链中,节点,public,模拟
From: https://www.cnblogs.com/jeldp/p/16843587.html

相关文章

  • vue源码分析-响应式系统(三)
    上一节,我们深入分析了以data,computed为数据创建响应式系统的过程,并对其中依赖收集和派发更新的过程进行了详细的分析。然而在使用和分析过程中依然存在或多或少的问题,这......
  • vue源码分析-响应式系统(一)
    从这一小节开始,正式进入Vue源码的核心,也是难点之一,响应式系统的构建。这一节将作为分析响应式构建过程源码的入门,主要分为两大块,第一块是针对响应式数据props,methods,da......
  • vue源码分析-动态组件
    前面花了两节的内容介绍了组件,从组件的原理讲到组件的应用,包括异步组件和函数式组件的实现和使用场景。众所周知,组件是贯穿整个Vue设计理念的东西,并且也是指导我们开发的......
  • dreamweaver作业静态HTML网页设计——动漫主题:天宝伏妖录(7页) 学生动漫网页设计作品
    HTML实例网页代码,本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人......
  • 【学生网页设计作业源码】基于HTML+CSS+JavaScript简单的大学生书店(13个页面) 二手书
    ......
  • 如何用 Python 来模拟概率
     小朋友问我一个问题,如何用Python来模拟概率. 题目是:从 [-2,-1,0,1,2,3]中随机选择两个不同的数,乘积为0的概率是多少?我搜索并思考了一下,得出以下......
  • NOI2022模拟测试赛(二十二)
    link通道自己对于二分图构造一个类prufer序列。一个映射方式是合法的,只需要:一棵生成树能构造出一个prufer序列。能从一个prufer序列逆推回整棵树的形态,即过程......
  • NOI2021模拟测试赛(六十)
    题面西克把\(x\toy\)拆成\(x\tolca\toy\),而\(x\tolca\)的部分很好搞,不予阐述。关键是\(y\tolca\)的部分,我们考虑离线解决。从上往下走时,对每种颜色\(c\)......
  • 【XSY4055】小K的疑惑(模拟最短路,值域并查集)
    题面小K的疑惑题解以下的数都是在\(b\)进制意义下讨论。默认\(n\geqb\),否则\(n<b\)可以特判答案为\(1\)。考虑DP,设\(d_r\)表示所有模\(n\)余\(r\)的正......
  • ddos模拟
    ddos模拟过程在服务器上启动一个服务dockerps查看当前网络状态curl-s-w'Httpcode:%{http_code}\nTotaltime:%{time_total}s\n'-o/dev/nullhttp://{IP地......