目录

 
  

 

 

链表

  “数组”作为数据存储结构有一定的缺陷

  • 无序数组——搜索效率是低效的
  • 有序数组——插入效率低

  不管在哪种数组中删除效率都很低,创建数组后,大小不可改变

线性数据结构

  Java数据结构算法

      Java数据结构算法

为什么链表很重要?

  • 最简单的动态数据结构
  • 更深入的理解引用(或者指针)
  • 更深入的理解递归
  • 辅助组成其他的数据结构(图结构、哈希表、队列)

链表 LinkedList

  数据储存在“节点(Node)”中,一个链节点是某个类的对象

  Java数据结构算法

  Java数据结构算法

  优点:真正的动态,不需要处理固定容量的问题(不用像数组new出来一片空间)

  缺点:不能随机访问(数组开辟的空间在内存上是连续的,可以通过下标计算出内存地址进行随机访问,而链表必须是顺序访问,由于依靠next一层一层连接,在计算机的底层,每一个节点对应的内存地址不同

数组和链表的对比

  数组:最好用于索引有语意的情况(user[1])

  优点:快速查询

  数组:最好不用于索引有语意的情况

  链表:动态


应用

1、在链表头添加元素

  在数组中,在最后面添加元素是最方便的,因为有size在跟踪数组的最后一个元素

  但是链表恰恰相反,链表头添加元素,因为有head头结点,没有跟踪最后一个元素的结点

  Java数据结构算法

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,null);
        }

        public Node(){
            this(null,null);
        }
    }

    private Node head;
    private int size;

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

    //获取链表中元素个数

    public int getSize() {
        return size;
    }

    public boolean isEmpty(){
        return size==0;
    }

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

        //head=new Node(e);相当于上面三行
        size++;
    }
}
View Code

相关文章:

  • 2021-08-03
  • 2021-05-14
  • 2021-08-24
  • 2021-11-07
  • 2021-09-04
  • 2021-06-12
  • 2021-05-17
  • 2021-06-26
猜你喜欢
  • 2021-07-17
  • 2021-04-12
  • 2021-10-09
  • 2022-12-23
  • 2021-11-06
  • 2021-07-11
  • 2022-12-23
相关资源
相似解决方案