看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
Ebergies:cong. 07/13 11:17