Re: [問題] 單向鏈結串列的反轉

看板C_and_CPP作者 (我愛貓貓)時間15年前 (2009/07/13 10:57), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《UNARYvvv (有趣生活)》之銘言: : ※ 引述《kissurface (我愛貓貓)》之銘言: : : void f(NodePtr *head) : : { : : NodePtr r,q,p; : : q=p=*head; : : if(p==NULL)return; : : while(p->link!=NULL && q!=NULL){ : : r=p; : : p=p->link; : : q=p->link; : : p->link=r; : : } : : *head->link=NULL; : (*head)->link : 這樣就好了.. : 因為 -> 的優先權比 * 高 : 原本的寫法形同 *(head->link)=NULL : 但 head 的型態是 NodePtr* 不是 NodePtr,所以你要取 link 出來就錯了 : 其實這種編譯錯誤,看一下錯誤訊息通常就知道問題在哪囉 : : *head=p; : : } 感謝各位熱心的大大指導!!現在我改完後的程式如下: void f(NodePtr *head) { NodePtr r,q,p; p=*head; if(p==NULL)return; q=p->link; if(q==NULL)return; r=q->link; while(r!=NULL){ q->link=p; p=q; q=r; r=r->link; } q->link=p; (*head)->link=NULL; *head=q; } 寫的很爛 程式碼又臭又長 但是執行結果正確了 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.130.88

07/13 11:17, , 1F
cong.
07/13 11:17, 1F
文章代碼(AID): #1AMgAYlS (C_and_CPP)
文章代碼(AID): #1AMgAYlS (C_and_CPP)