/* 若备用空间链表非空,则返回分配的结点下标,否则返回0 */int Malloc_SLL(StaticLinkList space){ /* 当前数组第一个元素的cur存的值, */ /* 就是要返回的第一个备用空闲的下标 */ int i = space[0].cur; /* 由于要拿出一个分量来使用了,所以我们 */ /* 就得把它的下一个分量用来做备用 */ if (space[0].cur) space[0].cur = space[i].cur; return i;}
/* 在L中第i个元素之前插入新的数据元素e */Status ListInsert(StaticLinkList L, int i, ElemType e){ int j, k, l; /* 注意k首先是最后一个元素的下标 */ k = MAX_SIZE - 1; if (i < 1 || i > ListLength(L) + 1) return ERROR; /* 获得空闲分量的下标 */ j = Malloc_SSL(L); if (j) { /* 将数据赋值给此分量的data */ L[j].data = e; /* 找到第i个元素之前的位置 */ for (l = 1; l <= i - 1; l++) k = L[k].cur; /* 把第i个元素之前的cur赋值给新元素的cur */ L[j].cur = L[k].cur; /* 把新元素的下标赋值给第i个元素之前元素的cur */ L[k].cur = j; return OK; } return ERROR;}