Я пытаюсь создать связанный список, у меня есть класс Node и класс List. Конструктор списка устанавливает Head и Tail (типа Node *) в nullptr. Оба класса являются шаблонными. Мой метод вставки для списка не будет держать указатель головы в начале, и я действительно не уверен, почему. Он назначается только один раз, когда head == nullptr.
Вот метод вставки.
void insert(T item)
{
//insert item at end
//allocate new node
Node<T> tempNode = Node<T>(item);
Node<T> *temp = &tempNode;
//put in data
temp->setData(item);
//end of list set to null
temp->setNext(nullptr);
//if first node
if (head == nullptr)
{
//head and tail are set to temp
head = temp;
cout << "head1: " << head->getData() << endl;
tail = temp;
} else //not first node in list
{ cout << "head: " << head->getData() << endl;
tail->setNext(temp);
tail = temp;
}
cout << "tail: " << tail->getData() << endl;
cout << "head: " << head->getData() << endl;
cout << "head: " << head << endl;
}
мне нужен только для того, чтобы увидеть, что происходит. Каждое head->getData()
Производит значение, которое в настоящее время хранится в temp, однако, когда я печатаю головку, это каждый раз один и тот же адрес.
, просто чтобы уточнить, у меня есть отдельный тестовый файл, который повторяет цикл 0-9, пытаясь вставить каждое значение , Результаты этого ...
head1: 0
tail: 0
head: 0
head: 0x7fffc574dc40
head: 1
tail: 1
head: 1
head: 0x7fffc574dc40
head: 2
tail: 2
head: 2
head: 0x7fffc574dc40
head: 3
tail: 3
head: 3
head: 0x7fffc574dc40
head: 4
tail: 4
head: 4
head: 0x7fffc574dc40
head: 5
tail: 5
head: 5
head: 0x7fffc574dc40
head: 6
tail: 6
head: 6
head: 0x7fffc574dc40
head: 7
tail: 7
head: 7
head: 0x7fffc574dc40
head: 8
tail: 8
head: 8
head: 0x7fffc574dc40
head: 9
tail: 9
head: 9
head: 0x7fffc574dc40