Посмотрите на весь цикл while ():
while(top != MaxSize) {
if(tmp1->next != NULL){
tmp2 = tmp1->next;
tmp1 = tmp2;
++top;
}//if
}//while
Итак, если у вас есть один элемент в списке, вы входите в цикл while (предполагая, что top == 0
?), И, поскольку это первый узел в списке, tmp1->next
равен NULL
, что удерживает top от увеличения, поэтому Вы застряли в петле.
Вам также не нужно tmp2
, вы можете просто использовать tmp1 = tmp1 -> next;
.
И чтобы исправить проблему, посмотрите на утверждение if. Почему вы проверяете, чтобы следующий узел не был нулевым?
Также посмотрите в push ():
void LinkList::push(int numIn) {
LinkNode * nodeIn = new LinkNode(numIn);
if(head == NULL) {
head = nodeIn;
}else {
nodeIn = head;
head = nodeIn;
}
}
Вы должны установить nodeIn->next
на head
, прежде чем указывать head
на nodeIn
. Как написано, новый узел никогда не добавляется в список.