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

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

Восстановить пароль Регистрация
 
Trigun
4 / 4 / 0
Регистрация: 02.04.2010
Сообщений: 22
25.04.2010, 23:36     Рекурсия. Формула записи элементов в начало списка #1
формула по записи элементов в начало списка, в итеративном варианте олично работала а вот в рекурсивном работает криво
помогите плизз!!!
заранее спасибо

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

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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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     Рекурсия. Формула записи элементов в начало списка
Ответ Создать тему
Опции темы

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