C++链表核心转储错误

C++ Linked List Core Dump error

本文关键字:错误 转储 核心 链表 C++      更新时间:2023-10-16

尝试做一个简单的链表程序,得到分段错误(核心转储)错误,任何人都可以帮忙吗?无法理解指针到底在哪里搞砸了。

你能建议任何其他有效的方法来写这个吗

#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;
}

你忘记分配对象

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;
        }
}

您专门测试head是否NULL,如果是,则head .这显然是错误的。您可能希望首先分配一个新节点。