作者l314520 (一生一世我爱你)
看板C_and_CPP
标题[语法] Tree qsort
时间Mon Dec 7 13:02:06 2009
typedef struct treenode
{
char key[30];
struct treenode *lc;
struct treenode *rc;
struct treenode *p;
}Tree;
int main()
{
Tree *sort[100]={NULL};
int cou=0;//initialization of nums of nodes
//...do something here
qsort(sort,cou,sizeof(sort[0]),cmp);
int cmp(const void *a,const void *b)
{
return strcmp(*(Tree**)a->key,*(Tree**)b->key);
}
有问题的部分是黄色的那两行
题目要求要用内建qsort去排序一个tree
现在卡在语法不知道要怎麽写QQ
错误讯息是
In function `cmp':
156: warning: dereferencing `void *' pointer
156: error: request for member `key' in something not a structure or union
156: warning: dereferencing `void *' pointer
156: error: request for member `key' in something not a structure or union
:: === Build finished: 2 errors, 2 warnings ===
要怎样写才会对呢?这次不能用无脑bubble sort了 囧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.227.195.63
※ 编辑: l314520 来自: 61.227.195.63 (12/07 13:02)
1F:推 VictorTom:(*(Tree**)a)->key 加个括号试试, 运算子/转型的优先顺 12/07 13:07
2F:→ VictorTom:序没有处理好, 所以变成在dereference void*而不是转型 12/07 13:08
3F:→ VictorTom:好的Tree*了.... PS. 只看语法, 内容没有去研究....:) 12/07 13:08
4F:→ bleed1979:return(strcmp((*(Tree**)a)->key,(*(Tree**)b)->key)); 12/07 15:20
5F:→ l314520:感谢 成功了! 12/07 18:21