[問題] 有關Pointer的問題

看板C_and_CPP (C/C++)作者 (ξEureka seveN ξ)時間15年前 (2010/08/15 14:00), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
不好意思麻煩板上的朋友 日前寫了個有關tree的作業,但是其中有一部份有關pointer的問題 我研究了良久還是找不出解決方案 不好意思麻煩板上的高手幫我看看問題出在哪裡 char sant[100][100]; struct node { char line[100]; node *lchild }; struct node* rot; void print(node* p) { while(p!=NULL) { printf("%s",p->line); p=p->lchild; } } void insert(node **p,char s[],int b) { if(*p==NULL) { node* q=(node*)malloc(sizeof(node)); for(int b1=0;b1<100;b1++) q->line[b1]=sant[b][b1]; q->lchild=NULL; *p=q; } else { node *q=*p while(q!=NULL) { q=q->lchild; } insert(&q,s,b); } } int main() { int a3=0; FILE* infile=fopen("in.txt","r"); while(!feof(infile)) { fgets(sant[a3],100,infile); insert(&rot,sant[a3],a3); a3++; } fclose(infile); print(rot); } 以上便是節錄我的程式碼 主要的功能是打開in.txt,將裡面的字一行當成一個node 接成一條左偏的樹 但不知道為什麼node好像沒有串連在一起 從print印出來的只有第一個node 我想應該是insert那邊沒有串接好 但苦思良久還是找不出解決方案 希望板上的高手能幫我解惑 謝謝 若耽誤各位寶貴時間請見諒 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.202.170

08/15 14:10, , 1F
insert else 那邊 insert(&q,s,b); 參數給錯
08/15 14:10, 1F

08/15 14:12, , 2F
你只改了q的值, 而沒有改最後一個節點lchild的值
08/15 14:12, 2F
※ 編輯: Eureka7 來自: 118.168.202.170 (08/15 14:23)

08/15 14:26, , 3F
不好意思l大,我有點不太懂怎麼改參數才會給對,我原本是
08/15 14:26, 3F

08/15 14:28, , 4F
想說q走到null,會進入if裡面,再指給新的node,但好像想
08/15 14:28, 4F

08/15 14:28, , 5F
錯了......都沒有指過去
08/15 14:28, 5F

08/15 14:28, , 6F
不好意思我實在是試不出來......
08/15 14:28, 6F

08/15 14:31, , 7F
08/15 14:31, 7F

08/15 14:34, , 8F
可以了!原來如此!謝謝你l大!感激不盡!
08/15 14:34, 8F
文章代碼(AID): #1CPu9hSt (C_and_CPP)
文章代碼(AID): #1CPu9hSt (C_and_CPP)