[問題] linklist+segmentation fault

作者: eecheng87 (EEcheng)   2018-01-06 11:29:24
先附上程式碼 https://ideone.com/CMiomt
稍微解釋一下我想做甚麼,首先先把一堆資料(包含IP,len)用linklist
串起來,頭命名為routing_head,接著透過d(已知)和segment函數將那條
鏈結序列分成多條鏈結序列(該分到哪一條的依據在segment函數內,依據是
看當前指到的那個資料的IP前幾個(由d決定)位元為多少就分到第幾個
group[index]),再透過insert_prefix將當前指到的資料插入(按照大小)
以下為 作法(流程圖) 和 想法(流程圖)

錯誤訊息只有segmentation fault(跑了一段時間才出現,應該第一條序列有
建立好了,第一個步驟那條)請問我哪個部分有問題呢?
另外我這種作法,是否在main函數print( ...group[0].next->IP)就會印出
分組完的那個位置的數字呢?
謝謝各位撥空看完
作者: Sidney0503 (Sidney0503)   2018-01-06 11:36:00
未看先猜不是用動態記憶體配置你的t只有41行 會assign所以50行的t->不是每次都有東西你應該先把編譯器warning開到最大不對 你42行就return 所以50行永遠拿不到t
作者: jobsdone (完工了)   2018-01-06 11:48:00
給個測資吧,比較好抓
作者: Sidney0503 (Sidney0503)   2018-01-06 11:48:00
介面最好切開 先做container再套入資料 不要混著寫
作者: eecheng87 (EEcheng)   2018-01-06 12:01:00
goo.gl/vH8y81 壓縮檔裡面記事本為測資S大,剛剛我有在50行新加你說的問題了,但還是不行https://ideone.com/UfeyZN
作者: jobsdone (完工了)   2018-01-06 12:51:00
你54~57不太對吧?你這樣兩條link list就混在一起了看起來你是想要把route一個一個拔到group裡,但是你沒有拔乾淨
作者: eecheng87 (EEcheng)   2018-01-06 12:59:00
j大,我在那個函數裡面只有用一條+一個點(node)沒錯我想這麼做,但請問拔乾淨是指?
作者: jobsdone (完工了)   2018-01-06 13:03:00
你要拔node的話next要null,所以你main也要改
作者: Sidney0503 (Sidney0503)   2018-01-06 13:21:00
把你的編譯器warning開到最大 不會的話去學
作者: jobsdone (完工了)   2018-01-06 13:22:00
然後你group也要初始化,大概這樣同意s大,你還蠻多地方寫很髒,這樣容易有問題
作者: eecheng87 (EEcheng)   2018-01-06 13:58:00
我用gcc -Wall 去看,除了出現warning: 的訊息外其他還有跑出資料夾路徑 那些也是警告嗎
作者: alan23273850   2018-01-07 08:40:00
新手寫linked list,最好先用計算紙清楚討論各種情況,不然co下去一定錯誤百出也最好把自己寫的list包成class模組化,較好debug

Links booklink

Contact Us: admin [ a t ] ucptt.com