静态链表数据结构

来源:百度知道 编辑:UC知道 时间:2024/07/12 16:42:14
int Malloc(SLinkList& space){
//若备用空间链表非空,则返回分配的结点下标,否则返回0
int i=space[0].cur;
if(space[0].cur) //备用链表非空
space[0].cur=space[i].cur;

return i; //返回分配的结点的下标
}
代码中的“space[0].cur=space[i].cur; ”一句为何意思?请详讲

你好,你参考你的SLinkList结构体中的定义。cur应该是结构体的一个数据成员。

Void InitSpace_SL (SLinkList &space) {
//将一维数组space中各分量链成一个备用链表,space[0].cur为头指针。
for (i=0;i<MAXSIZE-1;++i) space[i].cur=i+1//比如//MAXSIZE为12,则i=0,1……11,首先使用++i的目的是使i首先为1,这样,//紧接着space[i].cur=i+1,此时i=1表示space[1].cur=1+1。但是此处为何跳过space[0].cur=0+1这一句呢?这就是该算法的奥妙所在,要看下一算法2.15中的space[0].cur=space[i].cur,意思是表中第一行用来连接空表(如下图的space[0].cur=space[7].cur=8),第二行作为插入表的起始位置,第三行才插入数据。//
Space[MAXSIZE-1].cur=0;//让表尾值为0。
}//InitSpace_SL
space(0:11)
0 8
1 2
2c3
3b4
4e5
5g6
6f7
7d0
8 9
9 10
10 11
11 0