尝试做一个简单的链表程序,得到分段错误(核心转储)错误,任何人都可以帮忙解决这个问题。 无法理解指针的确切位置。
你能否提出任何其他有效的方法来写这个
#include<iostream>
using namespace std;
struct node{
int x;
node *next;
}*head=NULL,*temp=head;
class list{
public:
list(){
temp=head;
}
//is something happening here causing core dump?
void addnode(int value){
if (head==NULL)
{
head->x=value;
head->next=NULL;
}
else
{
while(temp->next!=NULL)
temp=temp->next;
temp->next=new node;
temp=temp->next;
temp->x=value;
temp->next=NULL;
}
}
void print(){
while (temp->next!=NULL)
{
cout<<temp->x<<" ";
temp=temp->next;
}
}
};
int main()
{
list l=list();
l.addnode(12);
l.addnode(23);
l.print();
return 0;
}
答案 0 :(得分:0)
你忘了分配对象
void addnode(int value){
if (head==NULL)
{
head = new node; //here was a mistake
head->x=value;
head->next=NULL;
还删除全局临时变量并使用本地
else
{
node *temp = head;
while(temp->next!=NULL)
temp=temp->next;
}
void print(){
node *temp = head;
while (temp!=NULL) // here mistake too
{
cout<<temp->x<<" ";
temp=temp->next;
}
}
答案 1 :(得分:0)
您专门测试head
是否为NULL
,如果是,则拒绝head
。这显然是错误的。您可能想先分配一个新节点。