C++ 排序链表和addSorted函数问题。

C++ 排序链表和addSorted函数问题。,c++,linked-list,add,sorted,C++,Linked List,Add,Sorted,所以我在这方面工作了一段时间,但我似乎不知道出了什么问题。此addSorted函数将所有正确的值添加到排序数组的相应位置,但当它进入将0添加到列表前面时,程序将不会终止,并且不会显示结果。有人知道为什么会这样吗 void addSorted(Data * newData){ if(head == NULL) { head = new LinkNode(newData); return; } LinkNode * current = head

所以我在这方面工作了一段时间,但我似乎不知道出了什么问题。此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;

希望通过这样说,你能明白我在说什么。

是的。它起作用了。非常感谢你。我只需要将current->next=newNode更改为head=newNode.:()()()()()()()()你可能想找一只泰迪熊来描述问题所在,然后你可能会发现大部分错误。我用同事而不是泰迪熊,结果也是一样,哈哈,我以前从来没听说过这个,但实际上这听起来是个好主意,因为你强迫自己,所以要一行一行地大声读代码。谢谢。@BleuCheese-我不记得在哪里读到的,但是一些计算机科学系要求学生在与助教交谈之前向bear解释他们的问题,这样就减少了需要与助教交谈的人数。我只是觉得这是个有趣的主意。