静态链表(五)

来源:互联网 发布:js格式化代码插件 编辑:程序博客网 时间:2024/06/06 03:21
静态链表
单链表是一种动态链表。

用数组描述的链表是静态链表。静态链表的存储结构如下:

<span style="font-size:18px;">#define MAXSIZE 1000typedef int ElemType;typedef struct{ ElemType data;//数据 int cur;//游标}Component,StaticLinkList[MAXSIZE];</span>

下面的为一静态链表的实例;


注意:数组下标为0的元素不存放任何数据且游标是指向第一个没有存放数据的元素的下标。下标为MAXSIZE - 1,也不存放任何数据且游标是指向第一个存放数据的元素的下标。其它的每一个元素的游标都是存放它下一个元素的下标地址,即其它每一个元素的游标都是指向它下一个元素。

上面实例有一错误,就是链表最后一个元素的游标为0,图上对应的就是o元素的游标应该为0。

静态链表的初始化相当于初始化数组,如下所示:

#define MAXSIZE 1000typedef int ElemType;typedef struct{ ElemType data;//数据 int cur;//游标}Component,StaticLinkList[MAXSIZE];int InitList(StaticLinkList tan){for(int i = 0;i < MAXSIZE - 1;i++){tan[i].cur = i + 1;}tan[MAXSIZE - 1].cur = 0;return 1;}//静态链表此时为空的,所以初始化后,游标赋值情况与上面的有点不一致,但是不影响

静态链表的特性:

1)对数组的第一个和最后一个元素做特殊处理,它们的data不存放数据。
2)未使用的数组元素称为备用链表。
3)数组的第一个元素,即下标为0的那个元素的cur存放备用链表的第一个结点的下标;数组的最后一个元素,即下标为MAXSIZE - 1 的cur则存放第一个有数据的元素的下标,相当于单链表中的头结点作用。
4)链表的最后一个元素(不一定是数组的最后一个元素),链表最后一个元素的cur一般存放0,表示它后面的结点为空了。



















0 0
原创粉丝点击