Вывод:
Первоначальный список из 4 узлов содержит:
Указатель головы = 17357680 Узел № 1: Элемент = 20; Next = 00000000
Я не знаю, правильно ли я подключил узлы, поскольку он не отображает следующий из четырех. Я видел, как другие программисты добавляли хвостовой узел; нужен один? Это делает что-то проще? Я даже правильно подключил узлы в моем для l oop? Я новичок в этом, и я растерялся после того, как просмотрел много документации, видео на YouTube и прочитал прошлые вопросы по stackoverflow.
#include <iostream>
template<class T>
class Node
{
private:
T item;
Node<T>* next;
public:
Node();
Node(const T& anItem);
Node(const T& anItem, Node<T>* nextNodePtr);
void setItem(const T& anItem);
void setNext(Node<T>* nextNodePtr);
T getItem() const;
Node<T>* getNext() const;
};
template<class T>
Node<T>::Node() : next(nullptr)
{}
template<class T>
Node<T>::Node(const T& anItem) : item(anItem), next(nullptr)
{}
template<class T>
Node<T>::Node(const T& anItem, Node<T>* nextNodePtr) : item(anItem), next(nextNodePtr)
{}
template<class T>
void Node<T>::setItem(const T& anItem)
{
item = anItem;
}
template<class T>
void Node<T>::setNext(Node<T>* nextNodePtr)
{
next = nextNodePtr;
}
template<class T>
T Node<T>::getItem() const
{
return item;
}
template<class T>
Node<T>* Node<T>::getNext() const
{
return next;
}
template <class T>
void display(Node<T> *hdptr)
{
Node<T>* curr = hdptr;
while (curr != nullptr)
{
int count = 0;
count++;
std::cout << "Node #" << count << ": Item = " << curr->getItem() << "; Next = " << curr->getNext() << std::endl;
curr = curr->getNext();
}
}
int main()
{
Node<int>* hdptr = nullptr, *tmp = new Node<int>, *n = new Node<int>;
int const nodes = 4;
for (int i=0, num=20; i<nodes; ++i, num+=10)
{
n = new Node<int>;
n->setItem(num);
tmp = n;
if (hdptr==nullptr)
{
hdptr = n;
}
else
{
tmp->setNext(n);
}
}
std::cout << "The intial 4-node list contains: " << std::endl;
std::cout << "\nHead pointer = " << int(hdptr) << std::endl;
display(hdptr);
}