版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83077380
用数组描述的链表,也叫游标实现法
指针下的数组顺序:[999]–>[1]–>[2]–>[3]–>[4]–>[0]–>[5]–>[6]–>…–>[998]–>[999]
分为两部分:
- 具有数据的数据链:[999]–>[1]–>[2]–>[3]–>[4]
- 还未存储数据的空链:[0]–>[5]–>[6]–>…–>[998]
中间,用数据链的最后一个元素[4]指向空链的头指针[0]
最后,空链的最后一个元素[998]–>[999]
如下图,解释四个特殊数据:
- list[0].游标–>空链的头指针
- list[MAX_SIZE-1].游标–>数据链的头指针
- 游标值为0–>list[4]是数据链的结尾,指向空链的头指针[0]
- 空链的最后元素list[998]指向数据链的头指针[999]
数据结构
#define MAX_SIZE 1000
typedef struct{
ElemType data;
int cur;
} Node,StaticLinkList[MAX_SIZE];
申请空间
分配了MAX_SIZE个Node,即定义了一个Node[MAX_SIZE]数组
StaticLinkList list;
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | … | 999 |
---|---|---|---|---|---|---|---|---|---|
Data | |||||||||
Cur |
初始化
- [0],[MAX_SIZE-1]的位置不存放数据
- [0].cur:下一个空闲的区域
- [MAX_SIZE-1]:头指针,指向第一个元素
下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | … | 999 |
---|---|---|---|---|---|---|---|---|---|
Data | |||||||||
Cur | 1 | 2 | 3 | 4 | 5 | 6 | 7 | … | 0 |