数据结构 数组 链表 栈 队列 Queue LinkedList

LinkedList

linkedList实现了Queue接口,可以把linkedList当Queue使用

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{}

public interface Deque<E> extends Queue<E> {}

线性表数据结构

数组
链表

队列

数组和链表是基础,栈和队列使用场景和分析;底层知识啊!!!

数组:
需要一块连续的内存空间;
空间大小确定,空间不足需要开辟一个大空间然后数据复制进来;
便于查询,下标;
不便插入和删除,因为有顺序;而不考虑顺序时,插入时,倒是可以直接将x标放到最后,插入到x标即可。
计算:
aim_标 = base_标 + 数据长度 * i
eg: 1008 = 1000 + 4 * 2

链表:
单链表: 后向指针
循环链表: 尾指针指向头
双向链表:后向指针 + 前向指针
一系列内存块,天然可扩缩容;改变指针指向即可。
频繁的占用、释放内存块容易产生内存碎片,Java中容易频繁GC;

多用双向链表,怎么说, 就是双向的搜索、删除、插入容易找到已知下标的前后目标;但是这样多占用内存空间,因为要存储前向指向的目标地址,烦。
还有双向循环链表,没用过。。。


压栈、出栈
后进先出;
有数组实现的顺序栈,也有链表实现的链式栈;
使用:
多线程中,各个线程有自己的内存空间,使用的临时变量还是公共变量就是使用的栈来存储,应该是公共变量;
浏览器页面的前进后退,两个栈(进栈、出栈)

队列
先进先出
入队、出队
有两个指针 head 和 tail, 指向对列数据的头和尾,数组实现的顺序队列有大小限制,所以有数据搬迁复制(同于数组),
但是可以批量后再触发;(出队照样,入队等批量再整体搬迁数据);
可以数组实现顺序对列;
也可以链表实现链式队列;
使用:
–阻塞对列
进销存,消费者、生产者

–并发对列
线程安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值