静态链表
廖家龙 用心听,不照做

静态链表:用数组的方式实现的链表

优点:增、删操作不需要大量移动元素
缺点:不能随机存取,只能从头结点开始依次往后查找;容量固定不可变

适用场景:不支持指针的低级语言;数据元素数量固定不变的场景(如操作系统的文件分配表FAT)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

#define MaxSize 10 //静态链表的最大长度

//用代码定义一个静态链表
struct Node{
int data; //存储数据元素
int next; //下一个元素的数组下标
};

//初始化静态链表:把a[0]的next设为-1,把其他结点的next设为一个特殊值用来表示结点空闲,如-2

//查找:从头结点出发挨个往后遍历结点(O(n))

//插入位序为i的结点:1.找到一个空的结点,存入数据元素【如何判断结点为空?通过特殊值来判断】 2.从头结点出发找到位序为i-1的结点 3.修改i-1号结点的next 4.修改新结点的next

//删除某个结点:1.从头结点出发找到前驱结点 2.修改前驱结点的游标 3.被删除结点的next设为特殊值

int main(){

struct Node a[MaxSize]; //数组a作为静态链表

//...后续代码
}