您的位置:首页 > 其它

静态链表(五)

2015-08-19 09:54 169 查看
静态链表
单链表是一种动态链表。

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

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

}Component,StaticLinkList[MAXSIZE];</span>


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



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

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

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

#define MAXSIZE 1000
typedef 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,表示它后面的结点为空了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: