Первый выпуск: Вы всегда вставляете в начало, заменяя head
. Если вы ожидаете, что ваши узлы появятся в порядке вставки, вы должны вставить их в конце:
class ProductName
{
private:
Node *head;
Node *tail; // additional member to track the last node
public:
ProductName()
: head(nullptr), tail(nullptr)
{ }
void insertNode(std::string input)
{
Node *temp = new Node{ std::move(input), nullptr };
if (tail) {
tail->next = temp;
tail = temp;
} else {
head = tail = temp;
}
}
}
Второй выпуск: Вы печатаете все элементы, которые имеют next
, что означает, что последний элемент не будет напечатан.
void printOut()
{
Node *p = head;
// print while p != nullptr
// this also properly handles the empty list when head == nullptr
while (p)
{
std::cout << p->name << " ";
p = p->next;
}
}