02-线性数据结构之数组、链表

79 阅读1分钟

一维数据结构(线性数据结构)

线性的数据结构强调存储与顺序.

数组和链表

一、数组

var a = [1,2,3,4,5,6]

a[1] , a[2] , a[3] 方括号表示存储地址的偏移.

操作系统小知识:通过偏移查询数据性能最好.

数组的特性:

  1. 存储在物理空间上是连续的.
  2. 底层的数组长度是不可变的.
  3. 数组的变量 , 指向了数组第一个元素的位置.

优点:

查询性能好 , 指定某个位置.

缺点:

  1. 因为空间必须是连续得是连续的 , 所以如果数组比较大 , 当系统的空间碎片较多的时候 , 容易存不下.
  2. 因为数组的长度是固定的 , 所以数组的内容难以被添加和删除.

二、链表

1.png

注:其中的箭头指的就是引用,第一个节点空间存储了一个值和下一个存储空间的地址引用 .

链表的特点:

  1. 空间上不是连续的.
  2. 每存放一个值 , 都要多开销一个引用空间.

注:我想传递一个链表,我必须传递链表的根节点

每一个节点 , 都认为自己是根节点

优点:

  1. 只要内存足够大 , 就能存的下 , 不用担心空间碎片的问题
  2. 链表的添加和删除非常的容易

缺点:

  1. 查询速度慢(指的查询某个位置)
  2. 链表的每一个节点都需要创建一个指向next的引用 , 浪费一些空间 . 当节点内数据越多的时候 , 这部分多开销的内存影响越少

列:

        function Node(value) {
            this.value = value;
            this.next = null;
        }
        var a = new Node(1);
        var b = new Node(2);
        a.next = b;
        console.log(a.next.value); //2
        console.log(a.next == b); //true
    </script>