排序链表和addSorted函数问题

Sorted linked list and the addSorted function problem.

本文关键字:函数 问题 addSorted 链表 排序      更新时间:2023-10-16

所以我一直在这个工作一段时间,我似乎不能弄清楚什么是错的。这个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;

希望通过这种方式你能明白我在说什么