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

标签 c++ linked-list add sorting

所以我已经为此工作了一段时间,但我似乎无法弄清楚哪里出了问题。此 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/

相关文章:

c++ - 合并两个排序的链表

c++ - C/C++ Bug gdb atof(argv[1]) 需要更改为 idb 才能工作

c++ - 在 windows 中使用互斥量进行进程间同步(win32 或 C++)

c - 链表、指针和节点

database - Sqlite3 添加列

c# - 如何在没有值的情况下将键添加到字典中?

android - 如何在 Android 的 tableLayout 中动态添加一行

c++ - 无法创建简单的 DLL 示例

c++ - 在 C++ 中从 C 库正确初始化 typedef 结构

c# - 如何替换 LinkedList 中的元素?