这个c++简单链表实现的问题是什么?



这是一个相当简单的项目,我花了大约20个小时在这个项目上兜圈子,没有任何进展。一开始我似乎是朝着正确的方向前进,但我有一个助教试图向我解释,它扭曲了我的大脑,让我回到了起点。

我知道这很可能是一个简单的错误,所以我将邮政编码以及我的解释。注意:Assert函数不是问题

IN H FILE

struct Node {
    int num;
    Node *next;
};   

CPP文件
void Intset::insert(int key)
{
   Node * current;
   current->num = key;
   current->next = NULL;
   assert (!find(key));
   if(head == NULL)
   {
      head = current;
   }
   else if(head->num >= key)
   {
      head->next = head;
      head = current;
   }
   else if(head->num < key)
   {
      head->next = current;
   }

所以我在这个函数(插入键到一个排序的链表)背后的想法过程是创建一个新的节点当前,并使用用户输入的键填充其num字段,并使其下一个字段等于NULL。我的第一个检查是看看是否头是空的,如果它是复制当前的内容到它。我的第二个检查是查看head的num字段是否包含大于或等于用户输入的key的数字。

如果是,我将头部节点移动到下一个节点,并用当前节点(前面的数字较小)替换它。我的第三个检查是查看head中的数字是否小于用户输入的键,如果是,它将用current填充head的下一个字段(较小的数字先出现)。到目前为止,我遇到了segfault错误,我不确定我分配错误。

从这里开始:

Node * current;
current->num = key;
current->next = NULL;

current点在哪里?您正在解引用一个未初始化的指针。这是undefined behavior,很可能导致隔离故障。

相关内容

  • 没有找到相关文章

最新更新