Java 中ListedList 模拟

分类:N07_Java

标签:

LinkNode.java

package com.wpf.Test;

/**
 * @Auther: wpf
 * @Date: 2025/9/10 - 09 - 10 - 8:15
 * @Description: com.wpf.Test
 * @version: 1.0
 */
public class LinkNode {
    // 上一个元素的地址:
    private  LinkNode pre;
    // 当前存入的元素;
    private Object obj;
    // 下一个元素的地址;
    private LinkNode next;

    public LinkNode getPre() {
        return pre;
    }

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

    public Object getObj() {
        return obj;
    }

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

    public LinkNode getNext() {
        return next;
    }

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

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


MyLinkedList

package com.wpf.Test;

/**
 * @Auther: wpf
 * @Date: 2025/9/10 - 09 - 10 - 8:17
 * @Description: com.wpf.Test
 * @version: 1.0
 */
public class MyLinkedList {
    // 链中一定有一个首节点
    LinkNode first;
    // 链中一定有一个尾节点
    LinkNode last;
    // 计数器
    int count = 0;
    // 提供一个构造器

    public MyLinkedList(){

    }

    //添加元素
    public void  add(Object o){
        if(first==null){
            // 将添加的元素分装为一个Node对象
            LinkNode n = new LinkNode();
            n.setPre(null);
            n.setObj(o);
            n.setNext(null);
            first = n;
            last = n;

        }else{
            LinkNode n = new LinkNode();
            n.setPre(last);
            n.setObj(o);
            n.setNext(null);
            // 当前链中的最后一个节点的下一个元素也要指向n
            last.setNext(n);
            // 将最后一个节点变为n
            last = n;
        }
        count++;
    }

    // 得到集合中的元素数量
    public int getSize(){
        return count;
    }

    // 通过下标获取元素
    public Object get(int index){
        LinkNode n = first;
        for (int i = 0; i < index; i++) {
            n = n.getNext();
        }
        return n.getObj();
    }

}

class Test{
    public static void main(String[] args) {
        MyLinkedList ml = new MyLinkedList();
        ml.add("aa");
        ml.add("bb");
        ml.add("cc");
        ml.add("dd");
        ml.add("ee");
        System.out.println(ml.getSize());
        System.out.println(ml.get(2));
    }
}


修改内容