错误 linkedlist .exe 中0x00D0345E处的未处理异常: 0xC0000005:访问违规写入位置0x



我尝试在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");
}

更改此内容

p=p->next=NULL;

对此

p->next=NULL;

在代码中,当您到达行时

p->next=new linklist;

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

相关内容

  • 没有找到相关文章

最新更新