[問題] Graph:Adjacency List
初次在本版發文
小弟我現在正在趕最後一份程式作業
其中需要用到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
01/19 21:16, 1F
感謝
其實我幾秒鐘前也發現這個問題XD
其他軟體寫久了回來寫C++還是有點不習慣的說
※ 編輯: Silwez (140.112.247.194), 01/19/2016 21:31:13
Programming 近期熱門文章
PTT數位生活區 即時熱門文章