我尝试用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");
}
答案 0 :(得分:2)
更改此
p=p->next=NULL;
到这个
p->next=NULL;
当您到达
行时,在代码中p->next=new linklist;
p始终为NULL。调试器应该告诉你这个。实际上在修复此代码之前,我会尝试再次使用调试器,这次看看p的值在运行程序时会如何变化。学习如何使用调试器将是一个很好的教训。