Weiss书中提到了链表的游标实现,什么是游标(Cursor)实现呢?
诸如BASIC和FORTRAN等许多语言都不支持指针。如果需要链表而又不能使用指针,这时我们可以使用游标(cursor)实现法来实现链表。
在链表的实现中有两个重要的特点:
1,数据存储在一组结构体中。每一个结构体包含有数据以及指向下一个结构体的指针。
2,一个新的结构体可以通过调用malloc而从系统全局内存(global memory)得到,并可以通过free而被释放。
个人理解为用一个结点数组来模拟实现内存的分配和释放,在结构体数组中,保留一个表freelist作为备用单链表,用来alloc或free游标可用空间,该表用0作为表头。刚开始时,freelist就是整个结构体数组。
从不同的表头(Index)出发形成了不同的单链表。如果定义一个大小为10的游标空间,则其初始化状态应如下:
slot | Element | Next |
0 | 1 | |
1 | 2 | |
2 | 3 | |
3 | 4 | |
4 | 5 | |
5 | 6 | |
6 |