2011-09-25 59 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