Я готовлюсь к некоторым собеседованиям и пытаюсь быстро написать простой единый связанный список.Код компилируется нормально, но ничего не печатается, и я не уверен, почему.
Вот что я сделал:
#include <iostream>
#include <memory>
#include <utility>
struct Node {
int data;
std::unique_ptr<Node> next = nullptr;
Node(const int& x, std::unique_ptr<Node>&& p = nullptr)
: data(x)
, next(std::move(p)) {}
};
std::unique_ptr<Node> head;
Node* tail;
void print() {
auto temp = head.get();
while (temp) {
std::cout << temp->data << " ";
temp = temp->next.get();
}
std::cout << "\t";
}
void push_back(const int& theData) {
std::unique_ptr<Node> newNode = std::make_unique<Node>(theData);
if (!head) {
newNode = std::move(head);
tail = head.get();
}
else {
tail->next = std::move(newNode);
tail = tail->next.get();
}
}
int main() {
head = nullptr;
tail = nullptr;
push_back(2);
push_back(4);
push_back(6);
print();
std::cin.get();
}
Это должно напечатать 2 4 6, но ничего не печатает.Есть идеи почему?