[語法] Tree qsort

看板C_and_CPP (C/C++)作者 (一生一世我愛你)時間16年前 (2009/12/07 13:02), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
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)

12/07 13:07, , 1F
(*(Tree**)a)->key 加個括號試試, 運算子/轉型的優先順
12/07 13:07, 1F

12/07 13:08, , 2F
序沒有處理好, 所以變成在dereference void*而不是轉型
12/07 13:08, 2F

12/07 13:08, , 3F
好的Tree*了.... PS. 只看語法, 內容沒有去研究....:)
12/07 13:08, 3F

12/07 15:20, , 4F
return(strcmp((*(Tree**)a)->key,(*(Tree**)b)->key));
12/07 15:20, 4F

12/07 18:21, , 5F
感謝 成功了!
12/07 18:21, 5F
文章代碼(AID): #1B78nHPQ (C_and_CPP)
文章代碼(AID): #1B78nHPQ (C_and_CPP)