看板 C_and_CPP 關於我們 聯絡資訊
在維基百科binomial heap(http://en.wikipedia.org/wiki/Binomial_heap) 裡找到這份程式碼: http://www.cs.unc.edu/~bbb/foss/binheaps/iheap.h (原版) 研究好幾個禮拜了還是好多地方不懂... 比方說__iheap_merge這個函數:(http://codepad.org/a9jTt5GE)←從原版節錄下來的 第8行到21行,是pos沿著a與b中degree較小的路徑走,走完之後再傳回一開始的 頭(head)。 1.a跟b兩個list都各自有各自的空間。pos沿著他們兩條走完,那pos "自己"有自己  占的空間嗎(他自己有實體?)還是pos是"虛擬的",只是沿著a和b走完而已。 2.第10行「*pos=a;」為什麼要用一顆星?而不是pos=a;?或pos=&a;?或**pos=a;? 每個指標變數都有三種可能:*ptr跟ptr跟&ptr,請問我在寫程式的時候要怎麼選? 指標基本概念我懂,雙重指標我也懂(指向指標的指標),但是看到這份應用我完全 不知怎麼理解。 3.第16行「pos = &(*pos)->next;」為什麼是這樣寫?等號右邊已經(*pos)->next了, 為什麼不用*pos=(*pos)->next;?或*pos=&(*pos)->next;?或之類的? 再補一個問題: 4.請問如果要實現這函數的功能,一定得用到雙重指標嗎?有可能只用單一指標就達  到相同的功能嗎? 為什麼指標編程這麼難QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.6.13.94
LPH66:我怎麼覺得你還沒搞懂指標...? 02/01 14:19
freedomxu:指標的指標:代表的意義如字面意思… 02/01 14:19
LPH66:這三個"可能"如果分清楚它們是指什麼的話就不會有這些問題了 02/01 14:20
bil193:*ptr代表ptr指向的變數的值。ptr代表ptr這個變數的值。 02/01 14:23
bil193:&ptr代表ptr這個變數自己的位址。 02/01 14:24
bil193:可是我真的不曉得等號兩邊的變數:pos跟a 要怎麼配? 02/01 14:26
bil193:「*pos=a;」...我要怎麼知道是這樣寫? ←我的問題好像是這 02/01 14:29
※ 編輯: bil193 來自: 124.6.13.94 (02/01 14:31)
VictorTom:去搞懂pos與a的型態, 包含基本型態, 與指標層數.... 02/01 14:30
james732:你要非常清楚「*」這個東西放在什麼地方是什麼意思~ 02/01 14:31
VictorTom:ma~~試著把每一個 = statement, = 的左右兩邊型態(包含 02/01 15:01
VictorTom:指標層數)都寫出來, 你才搞得清楚哪一個 = assign的是 02/01 15:01
VictorTom:node, 哪些是在assign ptr, 又或者是assign ptr to ptr. 02/01 15:02
VictorTom:上面是單就啃程式碼的建議; 至於它的演算法, 建議你自己 02/01 15:03
VictorTom:拿紙筆畫個圖merge heap node串一串; 有的人習慣從code 02/01 15:04
VictorTom:了解algo, 有人習慣從algo了解code, 你自己試試再說吧:) 02/01 15:04
bil193:謝謝V大的建議我來試試 02/01 15:18
nowar100:中分加油 我覺得你拿本有講指標的書好好念一下 搞懂型態 02/01 16:28
nowar100:我以前也是不懂到底要幾個* 要不要& 後來我把重點放在形 02/01 16:29
nowar100:態就比較有感覺了 這是我的經驗啦 @@" 02/01 16:30
bil193:嗯 看型態就好..筆記 02/02 18:16