проблема в создании нестандартного списка ссылок - PullRequest
0 голосов
/ 23 апреля 2020

Я закончил изучение объектно-ориентированного программирования (только основы) и начал изучать список ссылок, и я узнал, что он состоит из узлов, состоящих из данных и указателя на следующий узел.

В следующем коде я попытался создать 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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...