C : Singly linked list sorting segmentation fault

标签 c sorting pointers linked-list

void List_sort (struct nodeStruct **headRef){
    struct nodeStruct *tempNode = *headRef;
    struct nodeStruct *nextNode, *smallestNode;
        while (tempNode != NULL){
            nextNode = tempNode->next;
            smallestNode = tempNode;
            while (nextNode != NULL){
                if (nextNode->item < smallestNode->item) {
                    smallestNode = nextNode->next;
                }
                nextNode = nextNode->next;
            }
            int tempInt = tempNode->item;
            tempNode->item = smallestNode->item;
            smallestNode->item = tempInt;
            tempNode = tempNode->next;
        }   
}

不知道它为什么会产生段错误,应该没有对 NULL 的编辑。 段错误。 0x00000000004008d4 in List_sort (headRef=0x7fffffffe458) at list.c:130 130 tempNode->item = smallestNode->item; 有人知道为什么要这样做吗?

更新: 执行了建议,不再出现段错误,但排序不正确。

Value: 1
Value: 2
Value: 7
Value: 3
Value: 4
Value: 6
Value: 5
Value After Sort: 1
Value After Sort: 2
Value After Sort: 4
Value After Sort: 3
Value After Sort: 5
Value After Sort: 6
Value After Sort: 7

最佳答案

这是不对的:

            if (nextNode->item < smallestNode->item) {
                smallestNode = nextNode->next;
            }

应该是:

            if (nextNode->item < smallestNode->item) {
                smallestNode = nextNode;
            }

关于C : Singly linked list sorting segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144635/

相关文章:

c - 在 C 中的单独函数中初始化指针

c++ - 为什么 CMake 从 INCLUDE_DIRECTORIES() 调用中删除一些包含目录?

C - 拖尾文件并拦截输出

javascript - 按自定义变量对数组排序

java - 按字段对对象列表进行排序,如果为空,则按另一个字段排序

c - 为什么++不能正确递增?

c - 此代码的输出不是我所期望的。问题在哪里?

c++ - 优化稀疏矩阵中的对数熵计算

PHP数组使用特定键值对关联数组进行排序

c - 使用 C 提取 Wiki 链接