Re: [問題] About link list reverse

看板C_and_CPP (C/C++)作者 (Tangent)時間15年前 (2011/07/04 19:34), 編輯推噓5(5011)
留言16則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《cora (大熱豔陽天)》之銘言: : c語言 : Question:Link list reverse code不了解 : Input):一串數值 : Expected Output):反轉 : 一直搞不懂原因,煩請了解的指導一二或圖解…初碰point實在不容易啊 : //global: : typedef struct Node { : int data; : struct Node *next; : }LinkList; : int link_reverse(LinkList **reverse, LinkList *merge) : { : //merge:為任意一串數值 : //reverse:為反轉後output : LinkList *in = NULL, *ptr1 = NULL, *new = NULL; : in = merge; : while (in != NULL) { : ptr1 = in->next; : in->next = new;//*** ?????看不懂用意????? ***// : new = in;//*** ?????new為何不會被替換????? ***// : in = ptr1; : } : *reverse = new; : return 0; : } 紙筆一畫就很明瞭了... merge: █ → █ → █ → █ → █ → █ → █ 一開始: █ → █ → █ → █ → █ → █ → █ ↑ ∣ ↑ in ∣ ptr1 ↓ in->next new(NULL) new = in ↓ 接著: █ → (NULL) █ → █ → █ → █ → █ → █ ↑ ptr1 new ↓ 接下來: █ → (NULL) █ → █ → █ → █ → █ → █ ↑ in = ptr1 ------------------------------------------------------------- 第二次: new ↓ █ → (NULL) ↑ (下一步)∣ ╰in->next ↓ █ → █ → █ → █ → █ → █ ↑ ↑ in ptr1 ┌─new n │ ↓ e │ █ → (NULL) w │ ↑   ∥│ ∣in->next i │ ∣ n └→█ █ → █ → █ → █ → █ ↑ ↑ in ptr1 ※ 編輯: firejox 來自: 123.240.129.15 (07/04 20:29)

07/04 20:27, , 1F
推啊,倒是比較想知道為甚麼在
07/04 20:27, 1F

07/04 20:28, , 2F
前面輸入LinkList **reverse這格雙重指標???
07/04 20:28, 2F
※ 編輯: firejox 來自: 123.240.129.15 (07/04 20:30)

07/04 20:44, , 3F
我不知道用雙重指標的用意...
07/04 20:44, 3F

07/04 20:47, , 4F
蠻詭異的,直接回傳指標回去可以嗎?
07/04 20:47, 4F

07/04 20:49, , 5F
你可以改成一個星星,就知道它們的差別了
07/04 20:49, 5F

07/04 20:49, , 6F
直接回傳當然也可以,不過呼叫端要記得把回傳結果存起來
07/04 20:49, 6F

07/04 21:47, , 7F
開雙重指標適用於回傳值嗎?
07/04 21:47, 7F

07/04 21:49, , 8F
07/04 21:49, 8F

07/04 22:07, , 9F
你用回傳值就不要加雙重指標
07/04 22:07, 9F

07/05 11:33, , 10F
我的意思是說,不用return,但有回傳的效果
07/05 11:33, 10F

07/05 20:50, , 11F
不用return 又要有回傳效果?1.全域 2.從參數
07/05 20:50, 11F

07/05 23:09, , 12F
推圖:)
07/05 23:09, 12F

07/05 23:48, , 13F
C只有call by value 所以如果只傳pointer 那裡面的
07/05 23:48, 13F

07/05 23:50, , 14F
reverse只能操作到複製出來的東西
07/05 23:50, 14F

07/05 23:50, , 15F
caller這邊的pointer不會改到
07/05 23:50, 15F

07/05 23:59, , 16F
要改 1從指標位址改 2給指標新的值
07/05 23:59, 16F
文章代碼(AID): #1E4QL5qj (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1E4QL5qj (C_and_CPP)