(核心转储)c ++中的链接列表
Posted
技术标签:
【中文标题】(核心转储)c ++中的链接列表【英文标题】:(Core dumped) Linked Lists in c++ 【发布时间】:2019-02-04 14:41:32 【问题描述】:我正在尝试编写一个简单的程序来将整数值存储在 3 节点链表中,但在我插入第一个值后它显示“分段错误(核心转储)”。
我对 c++ 比较陌生,所以我真的不知道我做错了什么。我已经尝试在 Internet 上搜索解决方案,但我似乎找不到任何解决方案。
#include<iostream>
using namespace std;
struct node
int num;
node *next;
;
node *head=NULL;
node *tail=NULL;
void create(int num)
node *temp=new node;
temp->num=num;
temp->next=NULL;
if(head=NULL)
head=temp;
tail=temp;
temp=NULL;
else
tail->next=temp;
tail=temp;
void display(node *current )
while(current!=NULL)
cout<<current->num<<endl;
current=current->next;
int main()
int num;
for(int i=0;i<3;i++)
cout<<"Enter a number:";
cin>>num;
display(head);
return 0;
感谢任何帮助和/或提示 :)
编辑:好的,所以我看到我错过了 int he if 子句 head 应该是 head==NULL,但现在它最后没有显示链表:(
【问题讨论】:
head=NULL
应该是head == NULL
准确来说if(head=NULL)
应该是if (head == NULL)
,node *head=NULL;
是可以的。如果您在布局代码时使用几个空格更容易看到这种错误?
仅供参考,从 c++11 开始,您应该使用 nullptr
而不是 NULL
,并且从 c++11 开始,您不应再使用 new
或 delete
,而是使用智能指针用于创建对象和处理对象的所有权。
调试器。使用调试器。调试器将允许您单步执行代码,观察变量中的值。通常,使用调试器比正确发布到 *** 并等待有人为您检查或调试程序要快得多。
【参考方案1】:
在 if 语句中将 head=NULL 更改为 head==NULL。请在 for 循环中调用 create 函数。这是我的解决方案:
#include<iostream>
using namespace std;
struct node
int num;
node *next;
;
node *head = NULL;
node *tail = NULL;
void create(int num)
node *temp = new node;
temp->num = num;
temp->next = NULL;
if (head == NULL)
head = temp;
tail = temp;
temp = NULL;
else
tail->next = temp;
tail = temp;
void display(node *current)
while (current != NULL)
cout << current->num << endl;
current = current->next;
int main()
int num;
for (int i = 0; i < 3; i++)
cout << "Enter a number:";
cin >> num;
create(num);
display(head);
return 0;
【讨论】:
谢谢你,在我的编码中犯了一些基本错误我觉得很愚蠢。下次我一定会更加小心:)以上是关于(核心转储)c ++中的链接列表的主要内容,如果未能解决你的问题,请参考以下文章