表尾元素位置为什么是这样获取的?

表尾元素位置为什么是这样获取的?

#define OK 1#define ERROR 0typedef int ElemType;typedef struct{
    ElemType* elem;    int length;    int listsize;
} SqList;int ListDelete(SqList* L, int i, ElemType* e){    int j;
    ElemType *p, *q;    if (i < 1 || i >= L->length)
    {        return ERROR;
    }

    p = &(*L).elem[i - 1]; //p为被删除元素的位置
    *e = *p;
    q = (*L).elem + (*L).length - 1; //表尾元素位置(为毛?)

    for (++p; p <= q; ++p)
    {
        *(p - 1) = *p; //左移
    }
    (*L).length--;    return OK;
}


慕沐林林
浏览 629回答 2
2回答

qq_遁去的一_1

(*L).elem取的是首地址,首地址加上长度偏移再减去1就是尾元素地址。
打开App,查看更多内容
随时随地看视频慕课网APP