一、数据结构
1. 数据
数据就是电脑可以存储的东西,例如一段文字、图片、视频、音频等等。
计算机系统中,各种字母、数字符号的组合、语音、图形、图像等,统称为数据。
计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号总称。
2. 数据结构
数据结构是计算机存储、组织数据的一个方式,是指相互之间存在一种,或多种特定关系的数据元素的集合。
3. 数据结构分类
二、栈/队列
1. 栈(stack)
栈:只能在某一端插入或删除的特殊线性表,FILO
。
程序/词汇 | 意义 |
---|---|
.push(x) | 元素 x x x 入栈 |
.pop() | 将栈顶元素弹出 |
.top() | 查询栈顶元素 |
.empty() | 查询栈是否为空 |
.size() | 查询栈的元素个数 |
上溢 | 栈满入栈 |
下溢 | 栈空出栈 |
考题:合法出栈顺序
方法:依次枚举
2. 表达式
3. 队列(queue)
队列:一种从一端删除另一端插入的特殊线性表,FIFO
。
程序/词汇 | 意义 |
---|---|
.push(x) | 元素 x x x 入队 |
.pop() | 将队首元素弹出 |
.front() | 查询队首元素 |
.back() | 查询队尾元素 |
.empty() | 查询队列是否为空 |
.size() | 查询队列的元素个数 |
上溢 | 队满入队 |
下溢 | 队空出队 |
假上溢 | 队列存在可用空间时发生上溢 |
三、链表
1. 单链表
插入:
p->next = a->next;
a->next = p;
删除:
a->next = p->next;
delete p;
2. 双链表
插入:
q->next = p;
q->prev = p->prev;
p->prev->next = q;
p->prev = q;
删除:
p->prev->next = p->next;
p->next->prev = p->prev;
delete p;