美文网首页
常用数据结构

常用数据结构

作者: 探索的码易 | 来源:发表于2019-12-23 14:02 被阅读0次

    数组

    用连续的内存,存储同一类型的数据;特点随机访问,访问速度块(可以根据公式计算位置),同时删除,插入的速度比较慢 复杂度为o(1) ,在平常的开发中使用程序语音提供的容器就行(比如 Java 的arrrylist ),底层开发的话就是直接使用数组比较好的; 为线性数据结构

    链表

    所需要的内存不是一整块的,是通过指针将零碎内存拼接的,链表的每个节点除了要存储数据还要存储下个节点的位置;所以所需要内存也是比较大的; 因为链表的存储空间不是连续的,所以也不需要移动,所以删除比较块,同时不是连续的无法计算其位置,需要遍历所以查询是慢的;

    • 单链表

    • 循环列表

      1. 处理环形状数据的时候适用:约瑟夫问题
    • 双向链表

      1. linkhashmap
      2. 删除制定值的节点中,和单列表没什么区别,当删除指定指针所指向的节点时比单列表快一些,双向的节点信息保存到前一个节点的指指针内,所以也是可以用公式,推算出来的;

    <mark style="box-sizing: border-box;">数组和链表的最大区别还是扩容问题,同时数组和链表都是有顺序的</mark>

    栈,先进后出的情况,在日常应用中有很多的的用处,双栈的设计可以解决很多应用问题,可以扩容,其出入复杂度为O(n),基本栈的出入栈的复杂度为O(1),是用数组和链表实现的

    队列

    队列的先进先出,也是可以用数据和链表来实现;

    • 循环对列:

      1. 循环队列的好处,不用移动数据,提升了效率
    • 阻塞队列:阻止队列的出和入

    • 并发队列:解决线程安全的队列,循环队列加力度锁可以更好的实现并发队列;

    相关文章

      网友评论

          本文标题:常用数据结构

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