2011-09-25 58 views
1

所以我一直在努力這一段時間,我似乎無法弄清楚什麼是錯的。這個addSorted函數在排序後的數組的可尊敬位置添加了所有正確的值,但是當它進入列表的前面時,程序將不會終止,並且不會顯示任何結果。任何人有任何線索可能是爲什麼?排序鏈接列表和addSorted函數問題。

void addSorted(Data * newData){ 
    if(head == NULL) { 
     head = new LinkNode(newData); 
     return; 
    } 
    LinkNode * current = head; 
    LinkNode * previous = NULL; 
    while(current != NULL) { 
     if(newData->compareTo(current->data) == -1) { 
      LinkNode * newNode = new LinkNode(newData); 
      newNode->next = current; 
      if(previous == NULL) { 
       current->next = newNode; 
      } 
      else { 
       newNode->next = previous->next; 
       previous->next = newNode; 
      } 
     return; 
     } 
    previous = current; 
    current = current->next; 
    } 
previous->next = new LinkNode(newData); 
} 

回答

0

compareTo爲-1的結果是否意味着它小於當前節點?

如果以前== NULL設置電流 - >旁邊指向newNode,這意味着它們都指向對方,newNode->未來也指向當前節點。

我覺得你的問題的根源可能是這一點,其實。

 newNode->next = current; 
     current->next = newNode; 

希望通過這種方式,你可以看到我在說什麼。

+0

是的。有用。非常感謝。我只需要將current-> next = newNode更改爲head = newNode。 :))))))))))))) – BleuCheese

+0

您可能想要找到一隻泰迪熊來描述問題所在,然後您可能會發現大部分錯誤。我使用同事而不是泰迪熊,結果相同。 :) –

+0

http://c2.com/cgi/wiki?RubberDucking,http://en.wikipedia.org/wiki/Rubber_duck_debugging – sehe