gpt4 book ai didi

c++ - 在链接列表中插入时出现 SIGSEGV 错误

转载 作者:行者123 更新时间:2023-11-28 03:42:05 25 4
gpt4 key购买 nike

在发布这篇文章之前,我浏览了 Stack Overflow 上的一些以前的帖子。每次我尝试在 ideone.com(使用 SPOJ 引擎)上运行它时,我都会收到 SIGSEGV 运行时错误,我感到很困惑。谁能帮帮我?我评论了我认为我可能出错的那一行..

//MY CODE TO INSERT INTO A LINKED LIST
#include<iostream>
#include<malloc.h>

using namespace std;

struct Node
{
int data;
struct Node *link;
};
struct Node *node =NULL; //suspected error..not sure

void insert(int item)
{
if(node==NULL)
{
node->data=item;
node->link=NULL;
}
else
{
struct Node *temp;
temp=node->link;
node->data=item;
node->link=temp;
}
}

void display()
{
if(node==NULL)
cout<<"Linked list is empty!";
while(node!=NULL)
{
cout<<node->data<<" ";
node=node->link;
}
}
int main()
{
int n;
cin>>n;
display();
insert(n);

display();
return 0;
}

最佳答案

您没有为节点分配内存。您需要在插入函数中执行此操作:

node = new Node();

只有在那之后,您才应该开始在您的节点中填写datalink。在 ifelse 情况下都这样做。

更正后的代码将类似于以下内容(我还没有通过编译器运行它,所以请检查编译器错误):

void insert(int item)
{
if(node==NULL)
{
node = new Node();
node->data=item;
node->link=NULL;
}
else
{
struct Node *temp = new Node();
temp=node->link;
node->data=item;
node->link=temp;
}
}

您还需要稍后在完成对列表的操作后删除所有分配的节点,否则将导致内存泄漏。

关于c++ - 在链接列表中插入时出现 SIGSEGV 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com