繁体   English   中英

C++ 中的分段错误:排序链表

[英]Segmentation Fault in C++: sorted linked list

我正在编写一个 function 以在 C++ 的排序链表中插入一个数字。 但是,当我运行它时,我得到了“分段错误”。 谁能解释为什么会这样?

    Node * insertInSorted(Node * head, int data)
{
    Node * curr = head;
    Node * a = new Node(data);
    
    while(curr->next->data < a->data || curr->next != NULL)
    {
        curr = curr->next;
    }
    
    Node * temp = curr->next;
    
    curr->next = a;
    a->next = temp;
    
    return head;
}

while(curr->next->data < a->data || curr->next != NULL)

这显然是错误的。 你想要的条件是:

while(curr->next != NULL && curr->next->data < a->data)

  1. 下一个节点必须存在并且
  2. 必须具有小于您要插入的datadata

function 仍然无法正常工作(你永远不会在head之前插入任何东西,即使那是应该发生插入的地方),但至少你的崩溃应该消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM