Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Связанный лист - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора вывода в поток http://www.cyberforum.ru/cpp-beginners/thread259555.html
Собственно есть программка (большинство функций выкинул чтобы не запутывали) по работе с дробными числами # include <iostream> # include <iomanip> using namespace std; class RationalNumber {...
C++ Дан список из сведений о багаже 10 пассажиров. Подскажите пожалуйста как написать функцию ( if ) в данном примере: вот задание: Дан список из сведений о багаже 10 пассажиров. Найти багаж, средний вес одной вещи, в котором отличается не... http://www.cyberforum.ru/cpp-beginners/thread259550.html
За две недели надо написать программу с полным ее описанием по С++ C++
необходимо создать базу данных.с чего бы начать?
C++ Вопрос по указателям
Ребят, простите за такую глупость, но вот не знаю как ответить на чётко поставленный преподавателем вопрос : "Как зная указатель на функцию, получить значение этой функции в точке ?"
C++ Функции на С http://www.cyberforum.ru/cpp-beginners/thread259504.html
Дано действительное число y. Получить
C++ Выражения и файлы В текстовом файле находится выражение, состоящее из чисел и знаков арифметических операций. Программа вычисляет это выражение, учитывая приоритет операций и скобки. Использовать алгоритм Бауэра и... подробнее

Показать сообщение отдельно
Dexter
285 / 145 / 16
Регистрация: 13.10.2009
Сообщений: 164
18.03.2011, 13:36
Выход не происходит, я же с самого начала написал:
Иначе, без else, у вас набор несвязанных узлов.
Попытаюсь на примере показать:

Добавил вывод, чтобы было понятнее:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void ListGen(Node *temp, int i)
{
    if (i!=0)
    {
        temp->SetValue(i);
        temp->Next=new Node;
        cout<<"Node: "<<temp<<" Node->Next:"<<temp->Next<<" Value:"<<temp->GetValue()<<endl;
        temp=temp->Next;
        --i;
        ListGen(temp,i);
    }
    temp->Next=NULL;//Выполняется уже после того, как рекурсия завершилась
    cout<<"On exit Node: "<<temp<<" Node->Next:"<<temp->Next<<" Value:"<<temp->GetValue()<<endl;
}
Результат:
Node: 004D1418 Node->Next:004D1450 Value:10
Node: 004D1450 Node->Next:004D7E28 Value:9
Node: 004D7E28 Node->Next:004D7E60 Value:8
Node: 004D7E60 Node->Next:004D7E98 Value:7
Node: 004D7E98 Node->Next:004D7ED0 Value:6
Node: 004D7ED0 Node->Next:004D7F08 Value:5
Node: 004D7F08 Node->Next:004D7F58 Value:4
Node: 004D7F58 Node->Next:004D7F90 Value:3
Node: 004D7F90 Node->Next:004D7FC8 Value:2
Node: 004D7FC8 Node->Next:004D8000 Value:1
On exit Node: 004D8000 Node->Next:00000000 Value:-842150451
On exit Node: 004D8000 Node->Next:00000000 Value:-842150451
On exit Node: 004D7FC8 Node->Next:00000000 Value:1
On exit Node: 004D7F90 Node->Next:00000000 Value:2
On exit Node: 004D7F58 Node->Next:00000000 Value:3
On exit Node: 004D7F08 Node->Next:00000000 Value:4
On exit Node: 004D7ED0 Node->Next:00000000 Value:5
On exit Node: 004D7E98 Node->Next:00000000 Value:6
On exit Node: 004D7E60 Node->Next:00000000 Value:7
On exit Node: 004D7E28 Node->Next:00000000 Value:8
On exit Node: 004D1450 Node->Next:00000000 Value:9
10
9
Как мы видим в результате - все узлы создаются (рекурсивно все подряд), но, при выходе с функции, а это после того как рекурсия отработает, то для каждого узла Node->Next становится нулем, также видно что на выходе у нас не обнуляется только первый элемент (значение 10), почему я писал выше. В результате у вас остается first и ссылка на его узел, а вот у его узла уже ссылка на 0. А остальные остаются, просто вы с ними не связаны никак.

Блок схему лень рисовать, но если надо, можно попробовать))
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru