如何使用双指针正确引用结构中的指针
How to correctly reference a pointer within a struct using a double pointer
我正在尝试创建一个链表,其中每个 ListNode 都包含一个二叉搜索树。以下是结构:
typedef struct TreeNode {
int label;
long count;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
typedef struct ListNode {
TreeNode *ptr;
struct ListNode *next;
struct ListNode *prev;
} ListNode;
我有一个名为 addNode 的函数,它根据 TreeNode 的 label
和 count
值之间的比较按顺序添加 ListNode,但是我不知道如何正确比较它们。
我不断收到错误消息:request for member ‘next’ in something not a structure or union
参考addNode中的第二条if语句:
void addNode(ListNode ** head, ListNode * new){
if(*head == NULL){
*head = new;
return;
}
if((*head -> next -> ptr -> count) < (new -> ptr -> count)){
addNode(&(*head -> next), new);
}
有人可以解释一下进行这种比较的正确方法吗?
->
运算符的优先级高于一元 *
运算符。所以当你这样做时:
*head->next
你实际上是在说:
*(head->next)
您需要添加一些括号:
if(((*head) -> next -> ptr -> count) < (new -> ptr -> count)){
addNode(&((*head) -> next), new);
}
我正在尝试创建一个链表,其中每个 ListNode 都包含一个二叉搜索树。以下是结构:
typedef struct TreeNode {
int label;
long count;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
typedef struct ListNode {
TreeNode *ptr;
struct ListNode *next;
struct ListNode *prev;
} ListNode;
我有一个名为 addNode 的函数,它根据 TreeNode 的 label
和 count
值之间的比较按顺序添加 ListNode,但是我不知道如何正确比较它们。
我不断收到错误消息:request for member ‘next’ in something not a structure or union
参考addNode中的第二条if语句:
void addNode(ListNode ** head, ListNode * new){
if(*head == NULL){
*head = new;
return;
}
if((*head -> next -> ptr -> count) < (new -> ptr -> count)){
addNode(&(*head -> next), new);
}
有人可以解释一下进行这种比较的正确方法吗?
->
运算符的优先级高于一元 *
运算符。所以当你这样做时:
*head->next
你实际上是在说:
*(head->next)
您需要添加一些括号:
if(((*head) -> next -> ptr -> count) < (new -> ptr -> count)){
addNode(&((*head) -> next), new);
}