文章目录 数据结构 一、线性结构和非线性结构 二、数组(Array) 2. 链表(Linked List) 3. 栈(Stack) 4. 队列(Queue) 5. 树(Tree) 6. 图(Graph) 7. 堆(Heap) 8. 散列表(Hash Table) 9. 集合(Set) 10. 映射(Map)
数据结构
一、线性结构和非线性结构
1. 线性结构
1. 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系
2. 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的
3. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信
4. 线性结构常见的有:数组、队列、链表和栈.
2. 非线性结构
非线性结构包括:二维数组,多维数组,广义表,树结构,图结构
二、数组(Array)
1. 定义
1. 数组(Array)是有序的元素序列。
2. 数组由相同数据类型的元素组成,并按照一定的顺序排列。每个元素在数组中都有一个唯一的索引值,通过索引值可以访问和操作数组中的元素。数组可以存储多个相同类型的值,例如整数、浮点数、字符串等
3. 数组具有固定的长度,一旦创建,其大小通常不可改变。数组可以是一维的,也可以是多维的。一维数组是线性排列的元素序列,而多维数组可以看作是多个一维数组的组合。
2. 初始化数组
public static void main(String[] args) {// 1. 直接赋值:在声明数组时,可以直接指定数组元素的初始值。int[] numbers1 = {1, 2, 3, 4, 5};// 2. 使用循环:可以使用循环语句逐个为数组元素赋值,特别适用于大型数组或需要计算初始值的情况。int[] numbers2 = new int[5];// 3. 使用构造函数或创建数组对象:可以使用new关键字创建数组对象,并通过构造函数指定初始值。int[] numbers3 = new int[]{1, 2, 3, 4, 5};
}
2. 链表(Linked List)
由节点组成,每个节点包含数据和指向下一个节点的指针,可以根据需要插入、删除、遍历。
3. 栈(Stack)
后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
4. 队列(Queue)
先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。
5. 树(Tree)
层级结构,由节点和边组成,每个节点可以有多个子节点。
6. 图(Graph)
由节点(顶点)和边组成,节点之间可以是任意连接关系。
7. 堆(Heap)
可以快速找到最大值或最小值的完全二叉树。
8. 散列表(Hash Table)
根据关键字(Key)直接访问存储位置,实现高效的插入、查找和删除操作。
9. 集合(Set)
存储唯一元素的无序容器,支持集合操作(交集、并集、差集)。
10. 映射(Map)
存储键值对的容器,根据键查找对应的值。