У меня проблема с моим связанным списком при написании элементов: при запуске main.cpp я получаю следующий вывод:
myList.endInsert(5);
cout << myList << endl; output: nothing
myList.headInsert(3);
cout << myList << endl; output : 3
myList.headInsert(2);
cout << myList << endl; output : 3 2
Я полагал, что prboble, вероятно, либо в headinsert, либо как я поручил моему оператору >>: Coder for headinsert:
void IntList::headInsert(int the_number)
{
if (head == NULL) //if list is empty
{
head = new IntNode; //create new dynamic variable
head -> data = the_number; //add value to new variable
head -> link = NULL; // }
else
{
NodePtr temp = new IntNode;
temp -> data = the_number;
temp ->link = head; //temp pointer becomes head
head = temp; //head becomes temp
}
**And here is the friend function for the operator:**
ostream& operator <<(ostream& outs, const IntList& lis)
{
for(NodePtr temp = lis.head; temp->getLink() != NULL; temp = temp->getLink())
{
if( temp->getLink() != NULL)
{
outs << " ";
outs << temp->getData();
}
}
return outs;
}
Может ли кто-нибудь пролить свет на то, что может быть неправильно?
Заранее спасибо!
вы не печатаете свой последний товар...
for(NodePtr temp = lis.head; temp != NULL; temp = temp->getLink())
{
outs << " ";
outs << temp->getData();
}
должен это сделать (не проверено :).
Когда вы вставляете первый элемент, который вы устанавливаете
head->link == null;
когда вы позже распечатаете чек
if( temp->getLink() != NULL)
{
outs << " ";
outs << temp->getData();
}
вы не напечатаете первый элемент, так как он равен нулю.
Удалить:
if( temp->getLink() != NULL)
и он должен работать
ostream& operator <<(ostream& outs, const IntList& lis)
{
for(NodePtr temp = lis.head; temp != NULL; temp = temp->getLink())
{
//if( temp->getLink() != NULL)
{
outs << " ";
outs << temp->getData();
}
}
return outs;
}
Это! Должно работать сейчас!