mus*_*rat 0 c struct pointers linked-list
我正在尝试通过编写链接列表来教自己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);
}
Run Code Online (Sandbox Code Playgroud)
从列表中删除元素.如果我想删除第一个节点,我仍然需要某种方式来引用列表,这就是为什么listParg是一个双指针,所以它可以指向列表的第一个元素并允许我释放使用的节点成为头.但是,当我尝试取消引用listP访问指向下一个节点的指针时,编译器会告诉我error: request for member ‘next’ in something not a structure or union
.我在这做错了什么?我想我可能会无可救药地混淆......?
这个:
*listP->next
Run Code Online (Sandbox Code Playgroud)
与此相同:
*(listP->next)
Run Code Online (Sandbox Code Playgroud)
你想要这个:
(*listP)->next
Run Code Online (Sandbox Code Playgroud)