Re: [問題] 單向鏈結串列的反轉
※ 引述《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
07/13 11:17, 1F
討論串 (同標題文章)