【发布时间】:2018-02-06 01:07:21
【问题描述】:
这是一个插入排序链表的函数,但它显示分段错误(SIGSEGV)
void sortedInsert(struct node **head_ref, int data) {
struct node *new_node, *prev, *current;
new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->next = NULL;
if (*head_ref == NULL || (*head_ref)->data > data) {
new_node->next = *head_ref;
*head_ref = new_node;
return;
}
current = *head_ref;
prev = NULL;
while (current->data < data && current != NULL) {
prev = current;
current = current->next;
}
prev->next = new_node;
new_node->next = current;
}
【问题讨论】:
-
很可能是因为它有一个或多个错误,您可以使用调试器找到这些错误。
-
不要在 C++ 中 malloc。
-
while(current->data<data&&current!=NULL)应该是while(current!=NULL && current->data < data) -
这是一个运行时问题,但发布的代码无法编译。请发帖minimal reproducible example
-
struct node的定义是什么?
标签: c linked-list segmentation-fault