未处理的异常访问冲突错误

时间:2015-02-10 20:47:07

标签: visual-c++

我一直在面对这个"访问违规错误"贯穿这些路线的事情。我仍然无法找到其根本原因。如果有人帮我解决这个问题,我将非常感激。谢谢。

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

1 个答案:

答案 0 :(得分:0)

首先,最好在将其发布到SO时澄清您的问题。 由于您运行的是Visual C ++,因此可以尝试在调试模式下运行该程序。它可能会显示错误发生(或被检测到)的位置。

由于head在首次创建列表时初始化为NULL,因此当您调用AddItem时,它会在空列表中失败,因为last->Next未定义(last {1}}仍然是NULL)。您需要检查last本身是否为NULL(而不是仅检查下一个项目)。您可能也需要对其他函数执行相同的操作(例如deleteList)。