一:什么是静态链表
静态链表:分配一整片连续的内存空间,各个结点集中安置。
图例说明:
- 头结点是头:2,其下一个结点是e1:1,下一个结点是e2:6,下一个结点是e4:-1;-1就代表已经到达表尾了
- 如图所说,一个结点是8B,e1是第二个结点,所以e1存放的地址就等于
addr + 8*2
二:代码定义一个静态链表
#define MaxSize 10//静态链表的最大长度
typeof struct{//静态链表结构类型的定义
ElemType data;//存储数据元素
int next;//下一个元素的数组下标
}SLinkList[MaxSize];
// 上面的代码等价于下面的结构定义
struct Node{
ElemType data;
int next;
};
typedef struct Node SlinkList[MaxSize];
void testSlinkList(){
SlinkList a;
//后续代码......
}
三:简述基本操作的实现
3.1 初始化
把a[0]的next设为-1
把其他结点的next设为一金特殊值用来表示结点空闲,如2
;方便后面进行插入操作
3.2 查找
从头结点出发挨个往后遍历结点
,时间复杂度为O(n)
3.3 插入位序为i的结点
插入位序为i的结点:
- 找到一个空的结点,存入数据元系
- 从头结点出发找到位序为i-1的结点
- 修改新结点的next
- 修改i-1号结点的next
3.3 删除某个结点
删除某个结点:
- 从头结点出发找到前驱结点
- 修改前驱结点的游标
- 被删除结点next设为-2