[問題] 在WindowsForm下做不出linked list

看板C_and_CPP作者 (HateTheGame)時間11年前 (2013/11/25 18:48), 編輯推噓4(4019)
留言23則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2012 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 各位板大好, 小弟現在在上影像處理的實作, 課程編寫環境是寫在Form.h裡面, 觸發才會執行函式, 個人覺得很不方便, 平常宣告一個陣列也不能加入監看式, 現在問題來了, 我想做一個不會重複的隨機變數, 想法是寫一串list含有不同數字, 隨機抓一個之後,remove掉不會再重複, 但是呢..... 我竟然沒辦法把屁股的指標指向NULL, 以至於程式如果跑到屁股就會出錯, 已經超出小弟理解能力了, 還麻煩各位板大幫忙解惑。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 類型 'System.NullReferenceException' 的未處理例外狀況發生於 NoiseModels.exe 其他資訊: 並未將物件參考設定為物件的執行個體。 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/wJFUWq1s http://codepad.org/H8GY6LQs 補充說明(Supplement): 程式碼刪減過,希望能讓板大明白我想表達的問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.148.183

11/26 03:12, , 1F
還沒看程式, 看例外的樣子像是你去存取了空指標...
11/26 03:12, 1F

11/26 03:15, , 2F
我好像找到了: 37 行 進迴圈的條件應該是 nowPtr != NULL 吧
11/26 03:15, 2F

11/26 03:15, , 3F
「index 還沒出界而且手上還有東西就繼續」
11/26 03:15, 3F

11/26 03:16, , 4F
所以應該要 i < r && nowPtr != NULL 才對的樣子
11/26 03:16, 4F

11/26 03:17, , 5F
其實你的 i 在迴圈裡沒有用 拿掉直接 while(nowPtr != NULL)
11/26 03:17, 5F

11/26 03:17, , 6F
這樣應該會比較好...
11/26 03:17, 6F
感謝LP大的回答,但是我改完之後還是一樣~"~ 我把條件改成i<r && nowPtr->nextptr!=NULL 如果我這筆資料指向NULL代表我是最後一筆 所以要拿來回傳,並且透過lastPtr去切斷連結 可是這樣依然還是相同的錯誤,恕小弟資質駑鈍...改完已上傳 至於改成while的話,會每次都從最後一筆拿,就沒有我要的亂數功能了 再次感謝你的回答

11/26 09:01, , 7F
LP大真好心
11/26 09:01, 7F
真的 ※ 編輯: ga626031 來自: 114.40.148.183 (11/26 11:55) ※ 編輯: ga626031 來自: 114.40.148.183 (11/26 12:01)

11/26 12:14, , 8F
所以不用 STL 的理由是因為 CLI 嗎?
11/26 12:14, 8F

11/26 12:23, , 9F
這 List 的實作問題很多...
11/26 12:23, 9F

11/26 12:37, , 10F
然後你確定你的 List 內的個數夠?
11/26 12:37, 10F

11/26 12:43, , 11F
此外最後為空時, headPtr 要指向 NULL
11/26 12:43, 11F

11/26 12:45, , 12F
你這樣的 List 在只剩一個人的時候會爆炸
11/26 12:45, 12F
抱歉STL沒有學過,我會在去爬爬文 應該是夠的,我在create做出0~204的list W目前是205,即是照片的寬度, 的確是會爆炸,因為還沒拿完就出錯了, 程式本身也不會拿完list,感謝F大的提醒 ※ 編輯: ga626031 來自: 114.40.148.183 (11/26 13:03)

11/26 12:53, , 13F
11/26 12:53, 13F

11/26 12:58, , 14F
還有這演算法本身不是均勻隨機分布
11/26 12:58, 14F

11/26 13:06, , 15F
但是你 S 不是長乘寬嗎..? 不確定你說不會拿完的意思
11/26 13:06, 15F
我用matlab累加每個機率(gray[0]~gray[255])會等於0.5X 所以所以即使乘於S,應該不會用到每個像素點,我要做兩條list(X and Y) 所以應該是不會用完,謝謝你的熱心討論,我疑惑的是最後一筆資料的連結, 似乎還是不能指向NULL,導致for又多跑一次,然後就出錯~"~ ※ 編輯: ga626031 來自: 114.40.148.183 (11/26 13:18)

11/26 13:20, , 16F
不確定你的問題是什麼? 我給的 code 不能用嗎?
11/26 13:20, 16F
※ 編輯: ga626031 來自: 114.40.148.183 (11/26 13:20)

11/26 13:23, , 17F
還有你的回應我不是很確定在說什麼. 從你的 code 我不這麼想
11/26 13:23, 17F

11/26 13:27, , 18F
照你說法跟 code, S 只要是 2 倍 W 就肯定爆炸的.
11/26 13:27, 18F

11/26 13:27, , 19F
你的圖高度不到 3 嗎?.
11/26 13:27, 19F
萬分感謝F大,你說的list不夠用, 的確是我非常可怕的智障點,於是我做了一條有S個的list, 程式碼也讓我受益良多,感謝你願意花時間幫我解惑, 煎熬了許久現在有所成果了。

11/26 15:14, , 20F
只是半夜沒事稍微看一下錯誤點附近有沒有什麼不太對的地方
11/26 15:14, 20F

11/26 15:15, , 21F
而已啦 XD 要說好心什麼的現在已經沒有我剛來這版時的佛心了
11/26 15:15, 21F
也謝謝LP大,祝你LP大 ※ 編輯: ga626031 來自: 114.40.148.183 (11/27 02:20)

11/27 23:32, , 22F
↑這什麼感謝啦XDDD
11/27 23:32, 22F

11/28 13:12, , 23F
XDDDD
11/28 13:12, 23F
文章代碼(AID): #1Iavk93a (C_and_CPP)