此方法旨在在指定的索引处添加一个节点,该索引具有传递到链接列表的值,由于某种原因,当我使用示例数据运行它时,它给我一个“分段错误(核心转储)”错误。我已经缩小了引用current-> next的原因,但是我不知道从这里开始该怎么做。就我所知,我没有将current设置为null值,并且我检查了Linked List是否包含有效项。即使当我创建条件时,例如:
if(current->next) current = current->next
编译器仍然给我一个分段错误。
代码如下:
Node* add(Node* head, int index, int valueInput)
{
Node* newNode;
newNode->value = valueInput;
if(index == 0){
newNode->next = head;
return newNode;
}
int i = 0;
Node* current = head;
while(i <= index && current != NULL){
if(i == (index-1)){
Node* temp = current->next;
current->next = newNode;
newNode->next = temp;
return head;
}
i++;
current = current->next;
}
return NULL;
}
class Node {
public:
int value;
Node* next = NULL;
};
答案 0 :(得分:4)
Node* newNode;
您已经默认初始化了一个指针。该值是不确定的。读取不确定值的行为是不确定的。
newNode->value = valueInput;
您通过不确定的指针间接进行操作。该程序的行为是不确定的。