2015-02-10 27 views
0

我一直在貫穿這些行面對這個「訪問衝突錯誤」的東西。我仍然無法找到它的根本原因。如果有人幫助我完成這項工作,我將非常感激。謝謝。未處理的異常訪問衝突錯誤

#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

您需要提供一些回溯 – StenSoft 2015-02-10 20:48:54

回答

0

首先,最好在發佈到SO時澄清您的問題。 由於您運行的是Visual C++,因此您可以嘗試在調試模式下運行該程序。它可能會告訴你錯誤發生的位置(或被檢測到)。

因爲首次創建列表時head被初始化爲NULL,當你調用AddItem,將一個空的名單上失敗,因爲last->Next是不確定的(last仍然NULL)。您需要檢查last本身是否爲NULL(而不是僅檢查下一個項目)。您可能也需要對其他功能也一樣(例如deleteList)。

相關問題