线性表:修订间差异
来自陋室
更多操作
删除的内容 添加的内容
小 →效率 |
Maintenance script(留言 | 贡献) 校对格式并去除空列表项 |
||
| 第1行: | 第1行: | ||
== 线性结构的特点 == |
== 线性结构的特点 == |
||
* |
* 线性结构中的元素具有严格的一对一关系,表现为一个前驱和一个后继。 |
||
* 通常存储为顺序表(数组)或链表。 |
* 通常存储为顺序表(数组)或链表。 |
||
| 第7行: | 第7行: | ||
<math>\text{LOC}(a_i) = \text{LOC}(a_1) + (i - 1) \times L</math> |
<math>\text{LOC}(a_i) = \text{LOC}(a_1) + (i - 1) \times L</math> |
||
* |
* <math>\text{LOC}(a_i)</math>:第 <math>i</math> 个数据元素的存储地址。 |
||
| ⚫ | |||
* |
|||
* |
* <math>L</math>:每个元素所占存储单元大小。 |
||
* |
|||
| ⚫ | |||
该公式体现了顺序存储结构中地址的连续性,计算时间复杂度为 <math>O(1)</math>。 |
该公式体现了顺序存储结构中地址的连续性,计算时间复杂度为 <math>O(1)</math>。 |
||
== 顺序表的基本操作 == |
== 顺序表的基本操作 == |
||
* |
* 取值:根据位置直接通过公式计算地址,时间复杂度为 <math>O(1)</math>。 |
||
| ⚫ | |||
* |
|||
* |
* 插入与删除:为保持数据的连续性,需要移动元素,时间复杂度为 <math>O(n)</math>。 |
||
* |
|||
| ⚫ | |||
== 顺序存储结构的特点 == |
== 顺序存储结构的特点 == |
||
* |
* 逻辑相邻即物理相邻:数据存储为一段连续的内存空间。 |
||
| ⚫ | |||
* |
|||
| ⚫ | |||
| ⚫ | |||
* |
|||
| ⚫ | |||
== 链式存储结构的特点 == |
== 链式存储结构的特点 == |
||
* |
* 物理位置不一定相邻:数据元素之间通过指针链接,内存分配灵活。 |
||
| ⚫ | |||
* |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
* |
|||
| ⚫ | |||
* |
|||
| ⚫ | |||
== 单链表的操作 == |
== 单链表的操作 == |
||
| 第43行: | 第35行: | ||
<syntaxhighlight lang="c"> |
<syntaxhighlight lang="c"> |
||
s->next = p->next; |
s->next = p->next; |
||
p->next = s; |
p->next = s; |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
# 将 s 的指针指向 p 的后继。 |
# 将 s 的指针指向 p 的后继。 |
||
# |
|||
# 将 p 的指针指向 s。 |
# 将 p 的指针指向 s。 |
||
| 第56行: | 第48行: | ||
<syntaxhighlight lang="c"> |
<syntaxhighlight lang="c"> |
||
q = p->next; |
q = p->next; |
||
p->next = q->next; |
p->next = q->next; |
||
| 第62行: | 第54行: | ||
# 将 q 定位为 p 的后继节点。 |
# 将 q 定位为 p 的后继节点。 |
||
# |
|||
# 修改 p 的指针,使其跳过 q。 |
# 修改 p 的指针,使其跳过 q。 |
||