[問題] Graph:Adjacency List

看板Programming作者 (Pion)時間8年前 (2016/01/19 19:32), 8年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
初次在本版發文 小弟我現在正在趕最後一份程式作業 其中需要用到Graph的概念 這個Graph是一個旗盤方格的樣子 每個點都跟前後左右連接 而我打算用adjacency list的方式儲存這張graph 以下是我的程式碼: 01//Construct the graph 02 vector<int> List[grid^2]; 03 /*Relation between nodes and List :(grid = 4) 04 3| 12 13 14 15 <- List order 05 2| 8 9 10 11 06 1| 4 5 6 7 07 0| 0 1 2 3 08 ----------- 09 0 1 2 3 <- coordinate 10 */ 11 //Construct by using the adjacency list 12 for(int i = 0;i < grid^2;i++) 13 { 14 List[i].clear(); 15 if(i >= grid) 16 List[i].push_back(i-grid); 17 if(i <= grid^2 - grid - 1) 18 List[i].push_back(i+grid); 19 if(i % grid != 0) 20 List[i].push_back(i-1); 21 if(i % grid != grid - 1) 22 List[i].push_back(i+1); 23 for(int k = 0;k < List[i].size();k++) 24 cout << List[i][k] << " ";//print 25 cout << endl; 26 } 執行(grid=4)的時候出了很奇怪的問題: 當i跑到8的時候就會壞掉,跳出SIGSEGV的訊息 以前的經驗告訴我這個訊息應該是i跑出List的範圍之外 但List有16格(0~15),i=8不應該會溢出 除錯時,前面i=0~7時cout的數字都是正常 到i=8的16行開始出錯 我實在是看不出有什麼問題,希望能請各位高手看一下 --

07/24 09:20,
體驗版到骷髏王登場超有趣的,當初玩過直接預購了。
07/24 09:20

07/24 09:20,
正式版出來熬夜玩到後面就…
07/24 09:20

07/24 09:47,
幹樓上跟我被拐的經歷一模一樣
07/24 09:47

07/24 13:17,
幹樓上跟樓樓上跟我被拐的經歷一樣
07/24 13:17

07/24 14:54,
幹樓上跟樓樓上跟樓樓樓上我被拐的經歷一模一樣
07/24 14:54
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.247.194 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1453203147.A.09C.html

01/19 21:16, , 1F
grid^2 不是平方, 要平方直接乘以自己即可
01/19 21:16, 1F
感謝 其實我幾秒鐘前也發現這個問題XD 其他軟體寫久了回來寫C++還是有點不習慣的說 ※ 編輯: Silwez (140.112.247.194), 01/19/2016 21:31:13
文章代碼(AID): #1MdXxB2S (Programming)
文章代碼(AID): #1MdXxB2S (Programming)