In:
while (newNode->c = _getche() != 27)
=
имеет более низкий приоритет , чем !=
, поэтому он присваивает результат _getche() != 27
newNode->c
.
Исправлено:
while((newNode->c = _getche()) != 27)
Присоединение односвязных списков можно сделать проще, поддерживая указатель ptail
на указатель next
последнего узла, инициализированный head
:
ListNode *head = nullptr, **ptail = &head;
cout << "Hit 'esc' when you are done.\n";
for(char c; (c = _getche()) != 27;) {
auto node = new ListNode{c, nullptr}; // allocate and initialize a new node
*ptail = node; // append to the end of the list
ptail = &node->next; // move the end of list to the new node
}
//Display linked list
cout << "Here is what you have typed so far:\n";
for(auto next = head; next; next = next->next)
_putch(next->c);