Доброго времени суток!!!
Пишу программу, реализующую шаблон односвязного списка, но возникла проблемма с добавлением элементов в список : при добавлении элемента сначало в начало списка, а потом в конец - вылетатет с ошибкой, если наоборот - то всё нормально!!!
Код | #ifndef CLASS_LIST_H_INCLUDED #define CLASS_LIST_H_INCLUDED
template <class T> class List { struct Element { T data; Element *next; // указатель на следующий элемент списка };
Element *pHead; // указатель на первый элемент списка Element *pPrev; // указатель на последний элемент списка int countElem; // количество элементов в списке
public :
List() { pHead = NULL; countElem = 0; }
~List() { delAllList(); }
/*void add_front(T data) { Element *temp = new Element;
if(pHead == NULL) pHead = temp; else temp->next = pHead;
temp->data = data; pHead = temp; countElem++; }*/
void add_front(T data) { Element *temp = new Element;
if(pHead == NULL) { pHead = temp; } else temp->next = pHead;
temp->data = data; pHead = temp; countElem++; }
void add_back(T data) { Element *temp = new Element;
if(pHead == NULL) pHead = temp; else pPrev->next = temp;
temp->data = data; temp->next = NULL; pPrev = temp; countElem++; }
void print() { Element *pTemp = pHead;
while(pTemp != NULL) { cout << pTemp->data << endl; pTemp = pTemp->next; } }
void delAllList() { while(pHead != NULL) { Element *pTemp = pHead; pHead = pHead->next; delete pTemp; } }
bool IsEmpty() { if(countElem == 0) return true; else return false; }
};
#endif // CLASS_LIST_H_INCLUDED
|
Код | #include "list_realize.cpp"
int main() { List <int> list;
list.add_front(1); list.add_back(4);
//list.add_back(3); //list.add_back(2); //list.add_back(1);
list.print();
return 0; }
|
В чем может быть проблема? |