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