升华笔记:如何将一维数组list中各分量链成一个备用链表? typedef int Status Status InitList(StaticLinkList list) { int i; //i为数组下标,MAXSIZE为链表长度 for(i=0;i
2.静态链表的删除操作 源码实现 /*1.将下标为k的空闲结点回收到备用链表*/ void Free_SSL(StaticLinkList space,int k) { space[k].cur=space[0].cur; //将数据的第一个元素cur(其值为备用链表的第一个空闲元素下标),赋值给要删除分量的cur space[0].cur=k; //把要删除的分量下标赋值给第一个元素的cur } /*2.删除在L中第i个数据元素e*/ typedef int Status Status ListDelete(StaticLinkList L,int i) { int i,k; if(i<1 "| i>ListLength(L)) return ERROR; k=MAXSIZE-1; //存储链表最后一个元素的下标 for(j=1;j<=i-1;j++) k=L[k].cur; //找到要删除元素的前一个元素,并将其cur值赋值给k(即要删除元素的下标) j=L[k].cur; //将删除元素的游标值赋值给j,即值为下一个元素的下标 L[k].cur=L[j].cur; Free_SSL(L,j); } /*3.初始条件:静态链表L已经存在。操作结果:返回L中数据元素个数*/ int ListLength(StaticLinkList L) { int j=0; int i=L[MAXSIZE-1].cur; while(i) { i=L[i].cur; j++; } return j; }