数据结构与数据库基础详解
1. 数据结构
1.1 队列(Queue)
队列是一种与栈类似的结构,但采用“先进先出”(FIFO)的操作方法。它可以很容易地用数组实现,但需要两个指针来指示队列的起始和结束位置。
例如,向队列中插入 5 个值后,队列状态如下(此处以示意说明,实际可能以图形展示):
| 索引 | 值 |
| ---- | ---- |
| 0 | 值 1 |
| 1 | 值 2 |
| 2 | 值 3 |
| 3 | 值 4 |
| 4 | 值 5 |
如果从这个队列中移除 3 个值,队列状态会变为:
| 索引 | 值 |
| ---- | ---- |
| 0 | 无 |
| 1 | 无 |
| 2 | 无 |
| 3 | 值 4 |
| 4 | 值 5 |
需要注意的是,队列存储是循环的,所以第四次添加的值会出现在索引 0 的位置。
队列和栈在计算机内部都有应用。栈记录中断驱动操作系统在被中断前正在执行的操作,以便按顺序恢复;队列则记录事件驱动操作系统等待处理的消息。
1.2 链表(Linked List)
数组在数据发生变化时需要不断重写内存,为解决这个问题,除了使用索引,还可以使用链表。
链表是一种抽象的数据结构,其中物理结构和逻辑结构几乎不可能相同(空列表除外)。链表引入了数据元素的概念,最简单的情况下,它是一对值:数据值和指针值。指针值保存列表中下一个元素的索引。此外,还需要三个指针:一个指向列