java数据结构

数据结构

数据结构是一种存储和组织数据的方法,以便有效地使用数据。

线性数据结构

数据结构元素按线性排列,每个元素拥有前驱元素、后继元素

1.数组

在内存中变量的信息值如下:

下面是存放在一块的3个整数型变量abc,因为 int 类型占4字节,因此地址相差为4(即指针偏移量为4)。

变量名存储空间地址
a1000x1000
b2000x1004
c3000x1008

数组根据指针实现的,通过指针+偏移量,来切换到下一个变量,因此,上面3个可以通过数组的形式取出,即arr[0]的值为100,arr[1]的值为200,arr[2]的值为300.

正常情况下,通过这种方式可以取出下一个地址的值,但如果这个值不是我们给的,那么就会读出垃圾值,因此使用数组时需要先声明一块空间,然后进行存值与取值操作。

由于数组是通过偏移量来计算下一个元素地址的,因此数组元素的地址必须连续。

2.有序数组

3.栈

4.队列

线性列表,只能在一段添加元素,另一端删除元素
在这里插入图片描述
在上图里,元素已满。当右边移除一个新元素后,不应该将所有元素右移来使左边腾出新的空间,而是将插入的位置调到最右边,步骤如下:

1.从已满的队列,删除尾部第1个元素
在这里插入图片描述
2.删除尾部第2个元素,并添加一个新元素
在这里插入图片描述
3.删除尾部第3个元素,添加第二个新元素
在这里插入图片描述
4.当最左边的元素被移除后,删除箭头回到最右边
在这里插入图片描述

5.链表

1.单向链表

由头节点开始,每个节点只有本节点数据及、后继节点的地址信息,如果某节点是链表尾部,则后继节点为null。

节点结构如下:
在这里插入图片描述
单向链表结构如下:
在这里插入图片描述

2.单向循环链表

在单向链表的基础上将头尾相连,尾节点的后继变为头节点。
在这里插入图片描述

3.双向链表

从头节点开始,每个节点都由前驱、数据、后继,前驱指向上一个节点,后继指向下一个节点,头节点的前驱、尾节点的后继均为null。

节点信息:
在这里插入图片描述
双向链表结构如下:
在这里插入图片描述

4.双向循环链表

在双向链表的基础上将头尾相连,头节点前驱为尾节点,尾节点后继为头节点。
在这里插入图片描述

10.堆

非线性数据结构

6.二叉树

7.红黑树

8. 2-3-4树

9.哈希表

11.图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值