ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

链表

2022-07-25 22:01:51  阅读:130  来源: 互联网

标签:Node index next 链表 public size


 

为什么链表很重要?

链表是真正的动态数组。

是最简单的动态数据结构。

更深入的理解引用(或者指针)。

更深入的理解递归。

它可以用来辅助组成其他数据结构。

链表LinkedList

数据存储在节点(Node)中。

Class Node {

  E e;

  Node next;

}

优点:真正的动态,不需要处理固定容量的问题;

缺点:丧失了随机访问的能力;

 

数组和链表的对比:

数组最好用来索引有语义的情况;

最大的优点:支持快速查询。

链表不适用索引有语义的情况

最大的优点:动态

 

在链表中添加元素

public class LinkedList<E> {
    private class Node {
        public E e;
        public Node next;

        public Node(E e,Node next){
            this.e = e;
            this.next = next;
        }

        public Node(E e){
            this.e = e;
            this.next = null;
        }

        public Node(){
            this.e = null;
            this.next = null;
        }

        @Override
        public String toString(){
            return e.toString();
        }
    }

    private Node head;
    int size;

    public LinkedList(){
        head = null;
        size = 0;
    }

    //可以尝试传进来一个数组,把数组转换成链表的构造函数

    //获取链表中的元素个数
    public int getSize(){
        return size;
    }

    //返回链表是否为空
    public boolean isEmpty(){
        return size == 0;
    }

    //在链表头添加新的元素e
    public void addFirst(E e){
        /*Node node = new Node(e);
        node.next = head;
        head = node ;*/

        head = new Node(e,head);
        size ++;
    }

    //在链表的index(o-based)位置添加新的元素e
    //在链表中不是一个常用的操作,练习用:)
    public void add(int index,E e){
        if(index < 0 || index > size)
            throw new IllegalArgumentException("Add failed.Illegal index.");

        if(index == 0){
            addFirst(e);
        } else{

            Node prev = head;
            for(int i = 0; i < index - 1; i ++){
                prev = prev.next;
            }

            /*Node node = new Node(e);
            node.next = prev.next;
            prev.next = node;*/

            prev.next = new Node(e,prev.next);
            size ++;
        }
    }

    //在链表末尾添加新的元素e
    public void addLast(E e){
        add(size,e);
    }
}

 

标签:Node,index,next,链表,public,size
来源: https://www.cnblogs.com/oneJavaWorkerStudy/p/16518998.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有