/* 删除在L中第i个数据元素e */Status ListDelete(StaticLinkList L, int i){ int j, k; if (i < 1 || i > ListLength(L)) return ERROR; k = MAX_SIZE - 1; for (j = 1; j <= i - 1; j++) k = L[k].cur; j = L[k].cur; L[k].cur = L[j].cur; Free_SSL(L, j); return OK;}
/* 将下标为k的空闲结点回收到备用链表 */void Free_SSL(StaticLinkList space, int k){ /* 把第一个元素cur值赋给要删除的分量cur */ space[k].cur = space[0].cur; /* 把要删除的分量下标赋值给第一个元素的cur */ space[0].cur = k; }
/* 初始条件:静态链表L已存在。操作结果:返回L中数据元素个数 */int ListLength(StaticLinkList L){ int j = 0; int i = L[MAXSIZE - 1].cur; while (i){ i = L[i].cur; j++; } return j;}