文章目录
数据结构
一、线性结构和非线性结构
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)
存储键值对的容器,根据键查找对应的值。