栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单链表简单实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单链表简单实现

一、定义

除了头结点和尾节点,一个节点有唯一的前驱和后继,头结点无前驱,尾节点后继为null。

二、优缺点

        优点:增删操作比较快,因为无需移动节点元素

缺点:查询比较慢,因为无索引,故无法像数组一样根据索引通过一次计算定位

三、简单实现

1、定义一个节点类,包含指向下一个节点的next节点和data(数据)两个属性

public class Node {

    public Node next;

    public Object data;

    public Node(){}

    public Node(Object value){
        this.data = value;
    }

    public Node(Node node,Object value){
        this.next = node;
        this.data = value;
    }
}

2、执行插入操作(如下图)

 public void add(int index, Object element) {
        
        Node a = head;
        //初始化新节点
        Node newNode = new Node (  );
        newNode.data = element;
        newNode.next = null;
        //找后继
        for (int i = 0; i < index; i++) {
            a = a.next;
        }
        //此时的p.next指向了要插入的后继
        newNode.next = a.next;
        //p指向了要插入的前驱节点
        a.next = newNode;
        size ++;
    }

3、删除操作

只需将原来连接在一起的断开,使其前驱指向要删除节点的后继

public Object remove(int index) {
        Node p = head;
        for (int i =0 ;i < index ;i++ ){
            p = p.next;
        }
        p.next = p.next.next;
        size --;
        return toString ();
    }

4、查询方法

public Object get(int index) {
        Node p = head.next;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        return p.data;
    }

四、测试执行

 public static void main(String[] args) {
        MyLinkedList list = new MyLinkedList ();
        list.add ( 111 );
        list.add ( 222);
        list.add ( 555 );
        list.add ( 666 );
        list.add ( 1,444 );

        System.out.println (list.toString ());

    }


运行结果-----------


[111,444,222,555,666,]

Process finished with exit code 0
public static void main(String[] args) {
        MyLinkedList list = new MyLinkedList ();
        list.add ( 111 );
        list.add ( 222);
        list.add ( 555 );
        list.add ( 666 );
        list.add ( 1,444 );

        System.out.println (list.toString ());
        
        //执行一个删除操作
        list.remove ( 2 );
        System.out.println (list.toString ());
    }



运行结果-------------
[111,444,222,555,666,]
[111,444,555,666,]

Process finished with exit code 0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号