顺序表
按照顺序存储方式存储的线性表称为顺序表。
若顺序表中的元素按其值有序,则称其为有序顺序表。
顺序表的插入
设顺序表 A A A 的长度为 n n n,将字段值为 i t e m item item 的元素插入到第 i i i 个位置,插入步骤如下:
- 保证顺序表存储空间未满,并且插入位置合法
- 将第 i i i 个位置元素及其之后的所有元素后移一个位置
- 插入成功后,线性表长度变为 n + 1 n+1 n+1
顺序表的删除
设顺序表 A A A 的长度为 n n n,删除第 i i i 个位置的元素,删除步骤如下:
-
保证删除位置合服性
-
将第 i i i 个位置之后的所有元素前移一个位置
-
删除成功后,线性表长度变为 n − 1 n-1 n−1
顺序表总结
- 特点:存储地址连续,数据元素存储依次存放;数据元素类型相同,数据元素可随机存取
- 优点:存储空间的利用率高,存取速度快,适用于存取需求多的线性表
- 缺点:静态存储形式,数据元素的个数不能自由扩充 (受存储空间的限制);在插入、删除某个元素时,需要移动大量元素
单链表
结点只有一个指针域的链表成为单链表。
数据域 data 存放当前结点数据域的值,指针域 next 存放该结点的后继结点的地址信息。
若表中只有头结点,则链表长度为 0,此时称其为空链表。
单链表的指针之间关系:
若 p p p 为指向单链表第 i i i 个结点的指针,则可以知道:
- p . n e x t p.next p.next 指向第 i + 1 i+1 i+1 个结点
- p . d a t a p.data p.data 为 i i i 个结点的数据域
- p . n e x t . d a t a p.next.data p.next.data 为 i + 1 i+1 i+1 个结点的数据域
通过头指针进入单链表,根据每个结点的指针域可以循环遍历整个链表。
单链表中获取元素
获取单链表第 i i i 个数据步骤如下:
- 声明一个结点 p p p 指向单链表的第一个结点,初始化 j j