[問題] 關於單向鏈結串列反轉

看板C_and_CPP作者 (殺Mo)時間14年前 (2011/05/05 08:24), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串1/4 (看更多)
問題(Question): 今天在實作鏈結串列反轉 想以一函式反轉串列,但輸出結果怪怪 一直找不到問題點...請程式前輩們幫忙指正一下... 餵入的資料(Input): 10 20 30 40 50 預期的正確結果(Expected Output): 50 40 30 20 10 錯誤結果(Wrong Output): 50 程式碼(Code):(請善用置底文網頁, 記得排版) main() { int data=0; node *phead =NULL; scanf("%d",&data); while(data!=-1) { AddNode(&phead,data); scanf("%d",&data); } phead = reverse(phead); ListAll(phead); //印出串列中所有資料 此函式功能測試為正常 printf("\n"); system("pause"); } node* reverse(node *phead) { node *pleft = phead; node *pmiddle = pleft->pnext; node *pright = pmiddle->pnext; while(pright!=NULL) { pmiddle->pnext = pleft->pnext; pleft = pmiddle; pmiddle = pright; pright = pmiddle->pnext; } return pmiddle; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.171.204

05/05 08:30, , 1F
順便請問...這樣的寫法好嗎?會不會太多餘?
05/05 08:30, 1F

05/05 08:55, , 2F
怎麼看都不覺得這會反轉@@"
05/05 08:55, 2F

05/05 18:53, , 3F
我也想問反轉和Sort該怎麼用List作..
05/05 18:53, 3F

05/07 10:10, , 4F
問題出在reverse中pmiddle->pnext=pleft->pnext;這句
05/07 10:10, 4F
文章代碼(AID): #1DmUvP8l (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DmUvP8l (C_and_CPP)