结构表示
#define MAXSIZE 1000 //链表的最大长度
typedef struct {
ElemType data;
int cur; //该结点所在位序
}component , SLinkList[MAXSIZE];
//在静态链表中查找第 1 个值为e的元素,
//若找到则返回它在L中的位序,否则返回0;
int LocateElem_SL( SLinkList S, ElemType e ){
i = S[ 0 ].cur; //i 指向表中的第一个结点
while ( i && S[i].data !=e )i = S[ i ] . cur;
return i;
}//LocateElem_SL
//将一维数组space中的各分量链成一个备用链表,space[ 0 ].cur为头指针
//' 0 '表示空指针
void InitSpace_SL( SLinkList &space ) {
for ( i = 0; i<MAXSIZE - 1; i++ )space [ i ].cur = i +1;
space[MAXSIZE - 1].cur = 0 ;
}InitSpace_SL
//备用链表非空则返回分配的结点的下标否则返回0
int Malloc_SL( SLinkList &space ) {
i = space[ 0 ].cur;
if ( space[ 0 ].cur) space[ 0 ].cur = space[ i ].cur;
return i;
}
//将下标为 k 的空闲结点收回备用链表
void Free_SL (SLinkList &space , int k) {
space[ k ].cur = space[ 0 ].cur ;space[ 0 ].cur = k;
}//Free_SL
博主备注:此种数据结构有待提高研究