typedef struct _node
{
struct _node *p;
int key;
struct _node *l;
struct _node *r;
} node;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node *search(node **root, int k)
{ <----------오류 위치
if ((*root)->key == k)
{
return *root;
}
else if ((*root)->l == NULL && (*root)->r == NULL)
{
return NULL;
}
else if ((*root)->key < k)
{
return search((*root)->r, k);
}
else if ((*root)->key > k)
{
return search((*root)->l, k);
}
}
오류 C2040 'search': 'node *(node **,int)'의 간접 참조 수준이 'int ()'과(와) 다릅니다. BST
거의 한시간정도 이거 못찾았어요 ㅠㅠ
node의 주소의 주소가 필요한데 node의 주소를 넘긴듯요
여러군데에서 하는데 저거 하나만 돌려도 에러 뜨네요
//짱구아바이님
혹시 어디서 그런지 알 수 있을까요?
사용을 보시면 return search((*root)->l, k);
return search(&(*root)->l, k)
요정도로 한번 해보시죠.. 그냥 눈코딩이라 틀릴수도 있습니다. ㅋ
바꿔도 에러가 안나오진 않네요 ㅠㅠ
아마 node구조체 선언할때 l,r을 포인터로 해서 괜찮을꺼같아요 저 부분은요
&((*root)->r)
이렇게 바꿔야합니당.
search 첫번째 파라미터 타입이 node**고 node::r 타입이 node*
아 감사합니다 그렇게 바꿨어요 그래도...크흑....
너무 힘드네욥 ㅠ
http://codepad.org/leyiDCBS
코드 참고하세요.
혹시 저렇게 하면 main의 assert에서도 &(*root)로 해야하지 않나요?
오.. 신기한거 알았네요^^
저는 express깔았는데...ㅋㅋ
다만 코드패드만큼 심플한게 없다는 점.
넵.. 앞으로는 이런 무식한짓 안해야겠네요 ㅜㅜ
물론 다른 에러는 나옵니다. 그거는 보시면 아실꺼고...