我正在尝试创建一个链表,其中每个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
值之间的比较按顺序添加ListNodes,但是我无法弄清楚如何正确地比较它们。
我一直收到错误: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);
}
有人可以解释一下这种比较的正确方法吗?
答案 0 :(得分:2)
->
运算符的优先级高于一元*
运算符。所以当你这样做时:
*head->next
你实际上在说:
*(head->next)
您需要添加一些括号:
if(((*head) -> next -> ptr -> count) < (new -> ptr -> count)){
addNode(&((*head) -> next), new);
}