java数据结构详解!就是这么简单!(栈、队列、二叉树、红黑树等)

本文详细讲解了Java中的数据结构,包括栈、队列、链表、散列表、排序二叉树和红黑树。栈和队列是两种基本操作受限的线性表,链表在插入删除操作中表现出色,散列表提供了高效的查找方法。排序二叉树是满足特定条件的二叉树,红黑树是一种自平衡的二叉查找树,保证了插入、删除和查找操作的高效性。此外,还提到了B-TREE和位图等数据结构。
摘要由CSDN通过智能技术生成

在这里插入图片描述在这里插入图片描述

1. 数据结构

1.1 栈(stack)

栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶
(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,
前者相当于插入,后者相当于删除最后的元素。

1.2. 队列(queue)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的
后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为
队尾,进行删除操作的端称为队头。

1.3. 链表(Link)

链表是一种数据结构,和数组同级。比如,Java 中我们使用的 ArrayList,其实现原理是数组。而
LinkedList 的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。

1.4. 散列表(Hash Table)

散列表(Hash table,也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法
在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据
元素)的比较操作。
散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必
须要在数据元素的存储位置和它的关键字(可用 key 表示)之间建立一个确定的对应关系,使每个
关键字和散列表中一个唯一的存储位置相对应。因此在查找时,只要根据这个对应关系找到给定
关键字在散列表中的位置即可。这种对应关系被称为散列函数(可用 h(key)表示)。
用的构造散列函数的方法有:
(1)直接定址法: 取关键字或关键字的某个线性函数值为散列地址。
即:h(key) = key 或 h(key) = a * key + b,其中 a 和 b 为常数。
(2)数字分析法
(3)平方取值法: 取关键字平方后的中间几位为散列地址。
(4)折叠法:将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为散列地址。
(5)除留余数法:取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址,
即:h(key) = key MOD p p ≤ m
(6&#x

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值