Alex_McAvoy

想要成为渔夫的猎手

静态链表

【静态链表】

静态链表是借助数组实现的链表,与顺序表相比,其在进行增删操作时不需要移动大量元素,同时,其具有不能随机存取,固定容量不变的特点

可见,静态链表适用于不支持指针的编程语言(如:Lisp)和数据元素固定不变的场景(如:文件分配表FAT)

【结点】

静态链表的每个结点与链表相似,同样分为数据域和指针域,其中:

  • 数据域:存储数据
  • 指针域:称为游标,利用数组的下标来充当指针
1
2
3
4
5
template <typename T> 
struct LNode { //静态链表结点
T data; //数据域
int next; //指针域
};

【结点地址】

如下图所示,静态链表通常会将数组下标为 $0$ 的位置作为头结点,其数据域为空,指针域设置为存放的第一个数据元素的数组下标,对于链表最末端的数据元素,静态链表会将其指针域设置为 $-1$

同时,对于每个结点来说,其地址为:起始地址+(数据元素大小+游标大小)* 数组下标

以上图为例,假设每个数据元素大小为 $4B$,游标大小为 $4B$,起始地址为 $0x0100$

则对于数组下标为 $3$ 的结点来说,其地址为:

感谢您对我的支持,让我继续努力分享有用的技术与知识点!