静态链表
用数组描述的链表叫做静态链表
线性表的静态链表存储结构
#define MAXSIZE 1000
typedef struct
{
ElemType data;
int cur ;
}Component , StaticLinkList[MAXSIZE];
对静态链表进行初始化
Status InitList(StaticLinkList space)
{
int i ;
for(i = 0 ;i<MAXSIZE-1;i++)
space[i].cur=i+1;
space[MAXSIZE-1].cur= 0 ;
return 1;
}
对数组的第一个和最后一个元素做特殊处理,他们的data不存放数据
通常把未使用的数组元素称为备用链表。
数组的第一个元素,即下标为0的那个元素的cur就存放备用链表 的第一个结点的下标
数组的最后一个元素,即下标为MAXSIZE-1的cur则存放在第一个有数值的元素的下标,相当于单链表中的头结点作用。
静态链表的插入
获得空闲分量的下标
int Malloc_SLL(StaticLinkList space)
{
int i= space[0].cur;
if(space[0].cur)
space[0].cur=spaec[i].cur;
return i;
}
Starus ListInsert(StaticLinkList L , int i ,ElemType e)
{
int j ,k , l;
k = MAX_SIZE -1;
if (i<1 || i> ListLength(L)+1)
{
return 0;
}
j = Malloc_SLL(L);
if (j)
{
L(j).data=e;
for (l=1; l <i-1 ; l++)
{
k=L[k].cur;
}
L[j].cur = L(k).cur;
L[k].cur=j;
return 1;
}
return 0;
}