数据结构包含三大要素:
- 逻辑结构:表示数据间的逻辑关系。
- 物理结构:描述数据在计算机中的存储方式。
- 数据的运算:定义了数据可以进行的操作。
逻辑结构阐述的是数据元素之间的抽象关系。它是基于独立于计算机的考量,强调了数据间现实的关系。
- 线性结构如:线性表、栈、队列、双队列、串。
- 非线性结构如:集合、高维数组、树形结构、图状结构。
物理结构,也称为存储结构,是数据在计算机内的具体表示。它决定了数据如何在内存中分配空间。
对于线性表与链表,它们在逻辑上是相似的,都是具有一对一关系的元素序列。但物理存储上有所区别。顺序存储结构的线性表,我们称之为顺序表;而链式存储结构的线性表,则是链表。
谈及链表结点时,我们不可避免地会聊到内存管理、分配结点、头结点、尾指针以及结点的地址等概念。
双向静态链表在操作上有所不同,但基本概念和链表有共通之处。
栈(Stack):一种特殊的线性数据结构,其操作特点为后进先出(LIFO)。当使用数组模拟栈时,栈底通常不指向具体元素,而栈顶则允许进行入栈和出栈操作。
后缀表达式(逆波兰表达式)的处理涉及从左到右扫描字符串,并按照特定的规则进行计算。这包括对数字的入栈操作,以及对运算符的出栈和相应计算。
队列(Queue):与栈不同,队列是先进先出(FIFO)的线性表。它允许在一端插入元素(入队),而在另一端删除元素(出队)。以公路隧道为喻,形象地描述了队列的特性。