如何从指针到该节点的指针获取单链表节点值?
How to get singly linked list node value from pointer to pointer of that node?
我想从单链表中删除节点。我有变量 'pp'(指向当前节点指针的指针)遍历整个列表,直到找到要删除的节点(在这种情况下,值为 'a' 的节点),但是当我试图到达当前节点的值给我一个错误('->value' 的左边必须指向 class/struct/union/generic 类型)请告诉我我的代码有什么问题
Node** pp = &head;
while(*pp->value != a){ \ error on this line
pp = &(*pp->next);
}
*pp = *pp->next;
尝试使用括号,如下所示:
(*pp)->value
因为 operators precedence 导致您遇到的错误。运算符 ->
的优先级高于运算符 *
,因此需要使用括号。
错误('->value' 的左侧必须指向 class/struct/union/generic 类型)强烈提示您这里发生了什么:您试图在非结构体中请求 value
,您试图在地址 (pp
) 中请求成员,而不是在结构中(其中 pp
指向,即 *pp
)。
不要忘记在其余代码中使用括号,例如 (*pp)->next
。
PS: 不要忘记free
要删除的节点,在你更新了next
指针之后!
在 *pp 周围使用括号,由于运算符优先级需要
Node** pp = &head;
while((*pp)->value != a){ \ error on this line
pp = &((*pp)->next);
}
*pp = (*pp)->next;
我想从单链表中删除节点。我有变量 'pp'(指向当前节点指针的指针)遍历整个列表,直到找到要删除的节点(在这种情况下,值为 'a' 的节点),但是当我试图到达当前节点的值给我一个错误('->value' 的左边必须指向 class/struct/union/generic 类型)请告诉我我的代码有什么问题
Node** pp = &head;
while(*pp->value != a){ \ error on this line
pp = &(*pp->next);
}
*pp = *pp->next;
尝试使用括号,如下所示:
(*pp)->value
因为 operators precedence 导致您遇到的错误。运算符 ->
的优先级高于运算符 *
,因此需要使用括号。
错误('->value' 的左侧必须指向 class/struct/union/generic 类型)强烈提示您这里发生了什么:您试图在非结构体中请求 value
,您试图在地址 (pp
) 中请求成员,而不是在结构中(其中 pp
指向,即 *pp
)。
不要忘记在其余代码中使用括号,例如 (*pp)->next
。
PS: 不要忘记free
要删除的节点,在你更新了next
指针之后!
在 *pp 周围使用括号,由于运算符优先级需要
Node** pp = &head;
while((*pp)->value != a){ \ error on this line
pp = &((*pp)->next);
}
*pp = (*pp)->next;