基础数据结构
数组
说明
- 数组是一种线性数据结构,由相同类型的元素按顺序组成,并可以通过索引访问每个元素。数组中的元素在内存中是连续存储的。常见的数组类型包括一维数组、二维数组等。
- 数组的优点是可以快速访问和修改元素,但其缺点是元素数量固定且较少。当需要增加或删除元素时,数组的操作会很慢。因此,数组适用于元素数量不变且需要频繁访问的场景,如保存图像数据、存储字典等。
应用场景
- 存储一段连续的内存空间
- 访问数组元素的时间复杂度为O(1)
- 经常用于静态存储和随机访问的场合
难/中/易题目
链表
说明
- 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。链表分为单向链表、双向链表和循环链表。
- 单向链表中每个节点只有一个指向下一个节点的指针。双向链表中每个节点有两个指针,一个指向前一个节点,一个指向后一个节点。循环链表中的尾节点指向头节点。
- 链表的优点是元素数量不固定,插入和删除元素时速度快,但其缺点是访问元素时需要遍历整个链表。因此,链表适用于元素数量不固定且需要频繁插入和删除元素的场景,如实现哈希表、图的表示等。
应用场景
- 存储非连续的内存空间
- 插入和删除节点的时间复杂度为O(1)
- 经常用于需要频繁插入和删除节点的场合
难/中/易题目
栈
说明
- 栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。插入操作称为入栈,删除操作称为出栈。栈可以用数组或链表实现。
- 栈的优点是只能在栈顶进行插入和删除操作,因此访问速度较快。栈通常用于需要遵循后进先出原则的场景,如函数调用栈、表达式求值、浏览器历史记录等。
应用场景
- 保存一组元素,支持对末尾元素进行插入和删除操作
- 后进先出的数据结构
- 经常用于需要对数据进行倒序处理的场合
难/中/易题目
队列
说明
- 队列是一种先进先出(FIFO)的数据结构,可在队尾插入元素,在队头删除元素。队列也可以用数组或链表实现。
- 队列的优点是遵循先进先出原则,可以保证数据的顺序性。队列通常用于需要遵循先进先出原则的场景,如广度优先搜索、消息队列等。
应用场景
- 保存一组元素,支持对头尾元素进行插入和删除操作
- 先进先出的数据结构
- 经常用于需要按照顺序处理数据的场合