2013-12-11 85 views
0
int[] vX = verteX.clone(); 
int[] vY = verteY.clone(); 
int[] vC = vCost.clone(); 
int size = vY.length; 
for (int i = 0, check = vY[0]; i < size; i++, check = vY[i]) { 
    LinkedList<Edge> v = new LinkedList<Edge>(); 
    for (int j = 0; j < size; j++) { 
     if (vY[j] == check) { 
      Edge e = new Edge(); 
      e.setY(vX[j]); 
      e.setCost(vC[j]); 
      v.add(e); 
      for (int k = j; k < size - 1; vX[k] = vX[k + 1], vY[k] = vY[k + 1], vC[k] = vC[k + 1], k++) 
       ; 
      size--; 
     } 
    } 
    i -= 1; 
} 

這三個向量都有相同數量的元素。 vX,vY存儲邊緣的每個端點以及來自vX的每個頂點我正在尋找從該頂點開始的所有邊,並將它們放入一個包含結束頂點和該邊的代價的Edge結構。後來我會將它們添加到地圖中,但現在我有一個問題,鏈表無法正確創建,我找不到我想要的。有趣的鏈接列表

VX:1 2 3 1 1 4 2

VY:3 5 2 5 2 3 3

VC:2 1 3 2 4 4 9

對於數據在上面,我得到了下面的邊。錯誤的是[3,2],它應該與頂點3中的其他邊開始處於同一組中,但是最後評估它。我繼續看着它,看不到它跳過的原因,你可以追查下來嗎?

[3,1] [3,4] [5,2] [5,1] [2,3] [2,1] [3,2]

+0

做了筆和紙,發現當多個具有相同值的元素彼此相鄰時,通常會發生問題。 – Matt

回答

0

所需一個=在第二個,它似乎沒有達到列表的最後一個元素

for(int j=0;j<=size;j++)