浅谈java数据结构

复习:
数据: 只要存储在内存中
数据元素:
数据项:
数据结构:

逻辑结构 和 物理结构:
逻辑结构:
集合: 数据与数据之间没有任何关系
线性: 一对一关系
树型: 一对多关系
图型: 多对多关系

物理结构:
顺序结构(数组):

链式结构(链表):


数据结构: 数组 链表 栈 队列 二叉树

1.顺序结构 - 可扩容的数组
1)底层实现: 数组
2)特点:
a.按照顺序排列,每个元素都带有标号
b.除了有标号是连续的,内存中的物理空间也是连续的

3)优缺点:
优点: 查询速度快(因为有连续的下标,可以根据下标进行查询)
缺点:
a.插入/删除速度慢(插入/删除都是要移动元素的,所以元素一多就会执行效率慢)
b.内存的物理空间是连续的,利用不到碎片空间

2.链式结构
1)底层实现:节点(data(存储数据) + next(下一个节点的引用))
2)特点:
a.链表是内存中固定顺序,但是他的物理空间不连续
b.没有下标,并且从头节点开始
c.所有节点的访问,都必须通过头节点
d.head(头节点): 只存next,不存data
e.head.next = null -> 空链表
3)不同的链表:
a.单向链表
特点: 只有头节点,只能从头节点出发
b.双向链表(最常用)
特点: 有头节点和尾节点,所以可以从头节点出发也可以从尾节点出发
头节点: 不存元素,只有next
尾节点: 不存元素,只有pre

c.循环链表
特点: 尾节点指向头节点
可以从任意位置开始,都可以找到想要的元素

4)优缺点:
优点:
a.插入/删除效率高
b.不需要连续的内存物理空间,所以空间利用率高
缺点:
查询效率低,只能从头节点出发开始查询

3.栈
1).底层实现: 可以基于链表或数组
2).特点: 先进后出(后进先出)
3).特有方法:
push() - 压栈(往里加)
pop() - 弹栈(往外取)

4.队列
1).底层实现: 以基于链表或数组
2).特点: 先进先出(后进后出)

线性结构: 数据元素之间存在一对一的关系
顺序结构 + 链式结构 + 队列 + 栈 -> 线性结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值