Ваша программа неправильно сформирована / имеет неопределенное поведение из-за разыменования head
(например, с помощью if (head->next == NULL)
...), хотя указатель head
никогда не инициализируется.
Ваш append
должен проверить, установлено ли уже head
в значение, прежде чем проходить через все элементы head->next
. Также соответствующим образом адаптируйте список отображения.
class LinkedList{
private:
Node* head = nullptr;
public:
void append(int data) {
Node* nodeToAdd = new Node(data);
if (head == nullptr) {
head = nodeToAdd;
}
else {
Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
...
также, аналогично с Node :: next, поэтому после добавления первого узла произойдет сбой. Итак,
struct Node
{
int data;
Node *next;
Node(int data)
{
this->data = data;
this->next = nullptr;
}
};