数据结构:数组 链表 栈 队列 (复习总结)

数组:线性 连续内存空间 相同数据类型
逻辑结构 物理结构
数组下标=索引 a[0] 
高效随机访问获取 低效插入和删除
多次删除(只标记)统一执行 垃圾箱删除的道理
数组 容器类 ArrayList vector

容器中元素添加 获取
Object[] 数组 构造
扩容机制 原有容量的1.5倍

链表:非连续 非顺序 
插入和删除元素非常方便,查找麻烦
结点:element 数据域(数据元素) 指针域next(下一个元素的指针,引用,最后一个是null)
零散的内存块
链表类型:单 循环 双向 双向循环
单:头结点 尾结点
循环:尾next指向头data
双向:prev data next 两个指针+1数据。支持双向遍历。应用例子:hashmap
双向循环:

数组和链表比较: 存储结构比较
随机访问效率高 查找数组快
链表动态扩容好 插入删除元素快 LinkedList

思路:1.定义结点;2.使用结点表示链表    
E item;
Node<E> next;
Node<E> prev;
    node(index).item
get 链表查找 一分为2查,双向链表,从前往后查,从后往前查

ArrayList基于数组。LinkedList基于双向链表
查找
插入和删除
LinkedList更占内存,除了存储数据,还要有2个引用,一个指向前一个元素,一个指向后一个元素

例子:反转单链表

stack 数据结构: 实现 应用 吐
ArrayStack  入栈push; 出栈pop

顺序栈:基于数组
链式栈:基于链表
栈 扩容2倍
整数integer.MAX_VALUE-8
boolean

队列: 数据结构 FIFO
概念 常见队列 实现 火车站买票 拉 
队列头 队列尾
操作:入队列enqueue.  出队列dequeue
应用:缓存 循环并发队列 消息通信 公平锁
顺序队列:基于数组  ArrayQueue
head指针 tail指针
动态扩容机制(入队列)

队列实现:基于单链表
添加和删除元素操作
应用:CPU 请求处理 队列 拒绝请求

循环队列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值