2013-02-09 1 views
0

Я создал связанный список, называемый e. Я использовал конструктор копирования для создания e2, но по какой-то причине программа всегда сбой, когда я пытаюсь напечатать e2. Может кто-нибудь объяснить мне и помочь мне решить это для меня спасибо.Печать e2, созданного с помощью программы «Копировать конструктор», вызывает ошибку

#include <iostream> 
#include <ctime> 
#include <cmath> 

using namespace std; 

class Element 
{ 

public: Element();//constructor 
    Element(const Element&); //copy constructor 

    //Element& Element::operator =(const Element & from); 
    void Addelement(int row, int col, int value); 
    void swap(int num,int x, int arr[100]); 
    void printelement(); 
    void rowordermajor(); 

private: 


    typedef Element* ElementPtr; 


     int row; 
     int col; 
     int value; 
     ElementPtr next; 


    ElementPtr head; 

    bool comparegreater(ElementPtr temp1, ElementPtr temp2); 

}; 

int main() 
{ 
Element e; 
for (int i=0;i<5;i++) 
{ 
    e.Addelement(i,i,i); 



} 
e.printelement(); 

Element e2(e); 
//e2.printelement(); 

system("PAUSE"); 

} 



Element::Element()//normal constructor 
{ 
head=NULL; 
} 

Element::Element(const Element& e) 
{ 
    this->row=e.row; 
    this->col=e.col; 
    this->value=e.value; 
    this->next=e.next; 


} 

void Element::Addelement(int row, int col, int value) 
{ 

ElementPtr temp= new Element; 
temp->row=row; 
temp->col=col; 
temp->value=value; 
temp->next=head; 
head=temp; 
} 



     void Element::printelement()//why does it print backwards 
{ 
ElementPtr temp=head; 

while (temp != NULL) 
{ 
    cout<<"(" 
     <<temp->row 
     <<" , " 
     <<temp->col 
     <<" , " 
     <<temp->value 
     <<") "; 

    cout<<endl; 

    temp=temp->next; 
} 

} 

ответ

2

Поскольку вы не назначая NULL (или, может быть this->head = e.head;) к голове, когда вы используете конструктор с Element& e в качестве аргумента.

Смежные вопросы