如何使用双指针正确引用结构中的指针

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 的 labelcount 值之间的比较按顺序添加 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);
}