Почему из этого кода я получаю «запрос члена в чем-то, кроме структуры или объединения»?

Я пытаюсь научить себя C, кодируя связанный список. Я новичок в указателях и управлении памятью, и я немного запутался. У меня есть этот код:

/* Remove a node from the list and rejiggle the pointers */
void rm_node(struct node **listP, int index) {
    struct node *prev;
    struct node *n = *listP;
    if (index == 0) {
        *listP = *listP->next;
        free(n);
        return;
    }
    for (index; index > 0; index--) {
        n = n->next;
        if (index == 2) {
        prev = n;
        }
    }
    prev->next = n->next;
    free(n);
}

для удаления элемента из списка. Если я хочу удалить первый узел, мне все равно нужен какой-то способ сослаться на список, поэтому аргумент listPявляется двойным указателем, поэтому он может указывать на первый элемент списка и позволяет мне освободить узел, который раньше был головным. Однако, когда я пытаюсь разыменовать listPдля доступа к указателю на следующий узел, компилятор сообщает мне error: request for member ‘next’ in something not a structure or union . Что я здесь делаю неправильно? Я думаю, что я мог быть безнадежно запутался..?

0
задан muskrat 12 June 2012 в 10:38
поделиться