数据结构的理解

数据结构的醍醐灌顶

java常用基本数据结构类型:
  1.线性结构:数组,链表,队列,栈(一对一)
  2.非线性结构:tree(一对多)
个人理解:不论是线性结构还是非线性结构,都是对数据存储方式的不同描述而已,数据存储在内存中(包含:数据 + 地址 ),而为了便于理解,我们将其抽象画为线性结构(数组,链表,队列,栈)非线性结构(tree)。便于我们使用java面向对象的思想来操作内存数据。

数组---------
一块连续的大块内存(按数据类型和容量划分的等份内存小块),第一小块的默认下是0,以此类推

链表---------(栈,队列)
a.单向链表:有一个头结点(head),支持头节点的插入和删除,这种特性和栈的特性非常相似,栈的插入和删除都是在栈头进行的,栈的特性就是"先进后出",和单向链表非常相似,我们完全可以用单向链表来实现栈的功能。
a.单向链表的缺点:如果想在单向列表尾端出入数据的话,就需要遍历到最后一个数据进行插入,费时,双向列表解决了这个问题。

b.双端链表:有一个头结点(head),有一个尾结点(tail),支持头节点的插入和尾结点的删除,这种特性和队列的特性非常相似,队列的特性是"先进先出",和双端链表非常相似,我们可以使用双端列表来实现队列的功能。

b.双端链表和单向链表的缺点:数据的查询只能从头到尾(因为当前结点只持有下一个结点的引用),费时,双向列表解了这个问题。

c.双向列表:有一个头结点(head),有一个尾结点(tail),当前结点持有下一个结点的引用和上一个节点的引用,因此我们可以正向遍历也可以反向遍历

树----------
我们大胆的想象一下,树其实就是指有一个单向链表,然后每单向链表的每一个结点又是另一个单向链表的头结点,也就是说树就是由许多的单向链表组成的,每个结点包含了一个引用集合。这就是tree

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值