错误在linkedlist.exe中0x00D0345E处的未处理异常:0xC0000005:访问冲突写入位置0x00000004

时间:2013-10-04 03:33:01

标签: c++ linked-list

我尝试用c ++中的n元素创建链接列表。

但是我收到了一条错误消息:

  

linkedlist.exe中0x00D0345E处的未处理异常:0xC0000005:访问冲突写入位置0x00000004。

是什么原因?

#include <iostream>
using namespace std;

struct linklist
{
    int data;
    linklist *next;
};

void Create_linklist(linklist &l,int n) // with n element
{
    linklist *phead,*p;
    int i=0;
    phead=p=NULL;
    while (i<n)
    {
        if (phead==NULL)
        {
            phead=new linklist;
            p=phead;
        }
        else
        {
            p->next=new linklist; //--> Seem error this line
            p=p->next;
        }
        cout<<"Input value "<<i+1<<": ";
        cin>>p->data;
        i++;
        p=p->next=NULL;
    }
}

void Outer_list(linklist l)
{
    linklist *p=new linklist;
    if (p!=NULL)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
}
void main()
{
    linklist list;
    Create_linklist(list,5);
    Outer_list(list);
    system("pause");
}

1 个答案:

答案 0 :(得分:2)

更改此

p=p->next=NULL;

到这个

p->next=NULL;

当您到达

行时,在代码中
p->next=new linklist;

p始终为NULL。调试器应该告诉你这个。实际上在修复此代码之前,我会尝试再次使用调试器,这次看看p的值在运行程序时会如何变化。学习如何使用调试器将是一个很好的教训。