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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
#1

Рекурсия. Формула записи элементов в начало списка - C++

25.04.2010, 23:36. Просмотров 512. Ответов 5
Метки нет (Все метки)

формула по записи элементов в начало списка, в итеративном варианте олично работала а вот в рекурсивном работает криво
помогите плизз!!!
заранее спасибо

код итеративный:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
NodePtr MakeList()
{
   NodePtr p, q;
   int key;
 
   p=new Node;
   cin>>p->key;
   p->link=NULL;
 
   while(cin>>key)
     {
       q=new Node;
       q->link=p;
       q->key=key;
       p=q;
     }
   return q;
}
код рекурсивный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NodePtr MakeList(NodePtr p)
{
   NodePtr q;
   int key;
 
   if(cin>>key)
    {
     q=new Node;
     q->link=p;
     q->key=key;
     p=q;
 
     MakeList(p);
 
    }
   return q;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2010, 23:36     Рекурсия. Формула записи элементов в начало списка
Посмотрите здесь:

C++ Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка.
Начало списка вывести в новой строке C++
Добавление элемента в начало односвязного списка C++
C++ Значения не вставляются в начало списка
Добавление элемента в начало списка C++
C++ Вставка в начало списка
C++ Удалить элемент с заданным номером и добавить К элементов в начало списка
Разработать класс Итератор, методы которого: переход в начало списка, в конец, к текущему элементу списка, к с C++
Передача указателя на начало списка C++
C++ Получить указатель на элемент двунаправленного списка, добавить значение в начало списка и очистить его
Добавить элемент в начало списка C++
Список. Найти сумму элементов, больших 3 и меньших 8 и поместить ее в начало списка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.04.2010, 06:35     Рекурсия. Формула записи элементов в начало списка #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
NodePtr MakeList(void)
{
    NodePtr p, q;
    int key;
   
    q = NULL;
    while (cin >> key) {
        p = new Node;
        p->key = key;
        p->link = q;
        q = p;       
    }
    return p;
}
а в первом случае, при добавлении только первого узла, возвращалось q, которое содержало случайные данные
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
26.04.2010, 07:35  [ТС]     Рекурсия. Формула записи элементов в начало списка #3
итеративная функция у меня и так работала, мне нужно рексивную функцию
помогите кто может
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.04.2010, 07:45     Рекурсия. Формула записи элементов в начало списка #4
Цитата Сообщение от Trigun
итеративная функция у меня и так работала
в ней ошибка
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
26.04.2010, 07:52  [ТС]     Рекурсия. Формула записи элементов в начало списка #5
ну ладно))) согласен)))

но вопрос в другом- как сделать ее рекурсивной?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.04.2010, 09:36     Рекурсия. Формула записи элементов в начало списка #6
а вот по поводу твоей рекурсивной я ничего такого не вижу
только зачем там p=q; MakeList(p); если можно было сделать просто MakeList(q);

Добавлено через 3 минуты
свой код поправлю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
NodePtr MakeList(void)
{
    NodePtr p, q;
    int key;
   
    p = q = NULL;
    while (cin >> key) {
        p = new Node;
        p->key = key;
        p->link = q;
        q = p;       
    }
    return p;
}
и там подобная ошибка, если не ввести ничего, возвращается что ? ничего - случайные данные
переменные не инициализируются нулями, кроме нескольких случаев, у тебя таких нет
Yandex
Объявления
26.04.2010, 09:36     Рекурсия. Формула записи элементов в начало списка
Ответ Создать тему
Опции темы

Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru