所以我已经为此工作了一段时间,但我似乎无法弄清楚哪里出了问题。此 addSorted 函数将所有正确的值添加到已排序数组的相应位置,但是当它在列表的前面添加 0 时,程序不会终止并且不会显示任何结果。任何人都知道为什么会这样吗?
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);
}
最佳答案
compareTo的结果为-1是不是表示小于当前节点?
如果 previous==NULL 则设置 current->next 指向 newNode,这意味着它们相互指向,因为 newNode->next 也指向当前节点。
实际上,我认为您的问题的根源可能在于此。
newNode->next = current;
current->next = newNode;
希望通过这种方式你可以明白我在说什么。
关于c++ - 排序链表和addSorted函数问题。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549211/