Я закончил изучение объектно-ориентированного программирования (только основы) и начал изучать список ссылок, и я узнал, что он состоит из узлов, состоящих из данных и указателя на следующий узел.
В следующем коде я попытался создать 5 объектов класса node, каждый из которых имеет два атрибута - данные и указатель на другой объект. Я попытался присоединить узлы, используя функцию присоединения, как показано на рисунке. И, наконец, я намерен рекурсивно вывести данные из последнего узла, т.е. arr [4], в первый узел, т.е. arr [0]. Поскольку только первый узел имеет нулевой указатель в своем атрибуте next, идея заключалась в том, что рекурсия остановится на первом узле. Но выходные данные показывают, что arr [4] имеет нулевой указатель в следующем члене.
Я не могу найти, где я ошибаюсь.
Вход: 4 3 2 1 0
Выход: 4
Выход, который я ожидаю: 0 1 2 3 4
#include <iostream>
using namespace std;
class node
{ public:
int data;
node *next;
};
void attach(node &s1,node &s2)
{
s1.next=&s2;
}
void print(node &source)
{
cout<<source.data<<" ";
if(source.next) return;
else print (*(source.next));
}
int main()
{
int n{5};
node arr[n];
cin>>arr[0].data;
arr[0].next=nullptr;
for(int a=1;a<n;++a)
{
cin>>arr[a].data;
attach(arr[a],arr[a-1]);
}
print (arr[4]);
}