线性表

作者: NengLee | 来源:发表于2020-12-13 00:44 被阅读0次

    数据结构:

    • 数据项
    • 数据对象
    • 数据结构
    1. 线性表
    2. 队列
    3. 堆栈
    4. 树 (HashMap(1.8)内置红黑树)
    5. 图论
    6. 排序和查找算法

    数组

    连续具有相同特征(物理地址 & 逻辑地址)

    线性表

    零个或多个元素的有限集合

    顺序表 List

    ​ 一种物理顺序和逻辑顺序一致的数据结构。 index[i] : i:下标[i] 和 capacity[i] 一致。

    ArrayList结构
    1. ArrayList 内部是 Object[]

      1. arrayCopy(a,index,a,index+1,s-index)
      2. 扩容 capacity 有俩中,初始化,在add时候10,不够通过 newCapacity << 1
    2. LinkedList 内部是 link<ET> 双项链表

    链式表

    ​ 物理结构上非连续的存储,因为有next指向导致逻辑顺序是线性结构。

    单链表 HashMap
    HashMap单链表结构
    
        public class Node<E>{
            Objet data;
            Node<E> next;
        }
    
        //Add 
        s.next = p.next
        p.next = s
        
        //Remove
        p.next = p.next.next
        
        //Update
        p.Object = new Nede
        
        //Get
        while(p.next !=null){
            p=p.next
        }
      
    
    双链表 LinkedList
    LinkedList双链表结构
        public class Node<E> {
            public E item;   
            public Node<E> next;  //下个指向
            public Node<E> prev;   //上个指向 
        }
    
        /**
        * 增Node 
        * p - [s] - d   //添加s节点。 知道P | 新增S
        * 1. s.next = p.next;
        * 2. p.next.prev = s
        * 3. s.prev = p
        * 4. p.next = s
        */
    
        
        /**
        *删除Node
        * p - s - d   //删除s节点  知道P
        * 1. p.next.prev = p.prev
        * 2. p.prev = p.next
        */
    
    对比

    顺序表、单链表、双链表 优缺点:

    1. 顺序表
      • 优点:连续的存数空间,允许随机访问,末尾删插方便
      • 缺点:非末尾删除、插入效率低,长度固定
    2. 单链表
      • 优点:增删效率高于数顺序表,切长度可以随意修改
      • 缺点:内存不是连续,不能随机查到需要循环
    3. 双链表
      • 同单链表,且效率比单链表更快一些。
    数据结构容器数组
    1. List 是一个接口,它继承于Collection的接口,则代表着有序的队列。
    2. AbstractList 是一个抽象类,它继承于AbstractCollection 。AbstractList实现List接口中除size()、get(int location)之外的函数。
    3. AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了“链表中,根据index索引值操作链表的全部函数”
    4. ArrayList, LinkedList, Vector, Stack 是List的4个实现类。

    缓存算法

    1. FIFO(First In First Out):先进先出(队列)置换算法,按照进入内存的先后顺序排成队列,从队尾进入,从队首删除。该算法会经常淘汰访问的数据。
    2. LRU(Least Recently Used):也就是首先淘汰最长时间未被使用的页面,可能最近也不会访问。缓存图片、分布式在广泛运用。
    3. LFU(Least Frequently Used):也就是淘汰一定时期内被访问次数最少的页。

    相关文章

      网友评论

          本文标题:线性表

          本文链接:https://www.haomeiwen.com/subject/qjgygktx.html