我一直在面对这个"访问违规错误"贯穿这些路线的事情。我仍然无法找到其根本原因。如果有人帮我解决这个问题,我将非常感激。谢谢。
#include <iostream>
using namespace std;
struct Node
{
int data;
Node *Next;
};
struct list
{
int count;
Node*Head;
};
void IntializeList(list &L)
{
L.count=0;
L.Head=NULL;
}
void AddElement(list &L,int DataIn)
{
Node*Temp= new Node;
Node*last=L.Head;
while(last->Next!=NULL)
{
last=last->Next;
}
last->Next=Temp;
Temp->data=DataIn;
Temp->Next=NULL;
}
void count(Node*L)
{
int c=0;
while (L->Next!=NULL)
{
L=L->Next;
c++;
}
}
void DeleteList(Node*L)
{
while(L->Next!=NULL)
{
Node*temp=L;
L=L->Next;
delete temp;
}
}
void SplitList(list &L)
{
Node*Mid=L.Head;
Node*Final=L.Head;
Node*L2=L.Head;
/*Final=L->Head->Next->Next;
Mid=L->Head->Next; */
while(Final!=NULL)
{
Final=Final->Next->Next;
Mid=Mid->Next;
}
Node*L3=Mid->Next;
Mid->Next=NULL;
cout<<"L2= ";
while(L2!=NULL)
{
cout<<L2->data;
L2=L2->Next;
}
cout<<"L3= ";
while(L3!=NULL)
{
cout<<L3->data;
L3=L3->Next;
}
}
void main()
{
list L1;
IntializeList(L1);
AddElement(L1,2);
AddElement(L1,3);
AddElement(L1,4);
AddElement(L1,5);
AddElement(L1,9);
Node*Temp=L1.Head;
//printing function
while(Temp->Next!=NULL)
{
cout<<Temp->data;
Temp=Temp->Next;
}
SplitList(L1);
}
答案 0 :(得分:0)
首先,最好在将其发布到SO时澄清您的问题。 由于您运行的是Visual C ++,因此可以尝试在调试模式下运行该程序。它可能会显示错误发生(或被检测到)的位置。
由于head
在首次创建列表时初始化为NULL
,因此当您调用AddItem
时,它会在空列表中失败,因为last->Next
未定义(last
{1}}仍然是NULL
)。您需要检查last
本身是否为NULL
(而不是仅检查下一个项目)。您可能也需要对其他函数执行相同的操作(例如deleteList
)。