Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在链表中插入时发生SIGSEGV错误_C++_Linked List - Fatal编程技术网

C++ 在链表中插入时发生SIGSEGV错误

C++ 在链表中插入时发生SIGSEGV错误,c++,linked-list,C++,Linked List,在发布这篇文章之前,我已经阅读了一些关于堆栈溢出的文章。 每次我试图在ideone.com(使用SPOJ引擎)上运行这个程序时,我都会遇到一个SIGSEGV运行时错误,我被难住了。 谁能帮帮我吗?我评论了我认为可能出错的那句话 //MY CODE TO INSERT INTO A LINKED LIST #include<iostream> #include<malloc.h> using namespace std; struct Node { int data;

在发布这篇文章之前,我已经阅读了一些关于堆栈溢出的文章。 每次我试图在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;
}
//要插入到链接列表中的我的代码
#包括
#包括
使用名称空间std;
结构体类型
{
int数据;
结构节点*链接;
};
结构节点*Node=NULL//可疑错误..不确定
空白插入(整数项)
{
if(node==NULL)
{
节点->数据=项目;
节点->链接=NULL;
}
其他的
{
结构节点*temp;
temp=节点->链接;
节点->数据=项目;
节点->链接=温度;
}
} 
无效显示()
{
if(node==NULL)

cout您没有将内存分配给节点。您需要在insert函数中执行此操作:

node = new Node();
只有在这之后,您才应该开始在节点中填写
数据
链接

更正后的代码如下所示(我没有通过编译器运行它,所以请检查编译器错误):


您还需要在处理完列表后删除所有已分配的节点,否则将导致内存泄漏。

您永远不会为正在创建的新
节点分配内存。

您的代码甚至不接近右侧。
display()
函数“忘记”如果链表的原始开始是,则为
insert()的代码
在确认指针为空后取消引用该指针。请在谷歌上搜索一个简单链表实现的工作示例,然后从那里开始。或者更好的是,抓起一本书开始阅读感谢您的输入@Celada.Shall处理它们Maah是的..我现在明白我的错误了。谢谢。
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;
}
}