单向链表数据结构

单向链表数据结构

  • 对于链表数据结构来说:基本的单元是节点Node。

  • 对于单向链表来说,任何一个节点Node中都有两个属性:

    第一:存储的数据 第二:下一节点的内存地址

  • 链表优点:随机增删元素效率较高。(因为增删元素不涉及到大量元素位移)

  • 链表缺点:查询效率较低,每一次查找某个元素的时候都需要从头节点开始往下遍历

  • 自己写一个链表

package com.lichennan.collection.danlink;
/*
  单链表中的节点。
  节点是单向链表中的基本单元。
  每一个节点node都有两个属性:
       一个属性:是存储的数据
       另一个属性:是下一个节点的内存地址。
 */
public class Node {
    //存储的数据
    Object element;
    //下一个节点的内存地址
    Node next;
    public Node(){

    }

    public Node(Object element, Node next){
        this.element = element;
        this.next = next;

    }
}

package com.lichennan.collection.danlink;
//链表类
public class Link {
    //头节点
    Node header = null;
     int size = 0;
     public  int size(){
         return size;
     }
    //向链表中添加元素的方法
    public void add(Object date){
        //创建一个新的节点对象
        //让之前单链表的末尾节点next指向新节点对象。
        if(header == null){
            header = new Node(date,null);
        }else {
            Node currentLastNode = findLast(header);
            currentLastNode.next = new Node(date,null);
        }
        size++;
    }

    private Node findLast(Node node) {
        if(node.next==null){
            //如果一个节点的next是null
            //说明这个节点就是末尾节点。
            return node;
        }
        //程序能够到这,说明这个节点不是末尾节点
        return findLast(node.next);
    }

    //删除链表中某个数据的方法
    public void remove(Object obj){

    }
    //修改链表中某个数据的方法
    public void modify(Object newObj){

    }
    //查找链表中某个元素的方法
    public int find(Object obj){
    return 1;
    }
}

package com.lichennan.collection.danlink;

public class Test {
    public static void main(String[] args) {
        //创建一个集合对象
        Link link = new Link();
        link.add(100);
        link.add(200);
        link.add(300);
        link.add(400);
        System.out.println(link.size);
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46554776/article/details/106169725