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

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

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

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

25.04.2010, 23:36. Просмотров 525. Ответов 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++):

Удалить элемент с заданным номером и добавить К элементов в начало списка - C++
Написать программу, в которой создаются динамические структуры и выполнить их обработку в соответствии со своим вариантом. Для...

Список. Найти сумму элементов, больших 3 и меньших 8 и поместить ее в начало списка - C++
Помогите мне пожалуйста Создать программу для создания списка из 10 целых чисел, вводимых с клавиатуры и вывода его на экран....

Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка. - C++
Здравствуйте. Не получается решить задачу. Условие. Дан непустой двусвязный список. Удалить из списка все элементы с нечётными ...

Получить указатель на элемент двунаправленного списка, добавить значение в начало списка и очистить его - C++
Нужно создать двунаправленный список //вроде так, но не уверен struct Double_List {//структура данных int Data;...

Поместить в начало списка L количество четных элементов, а в конец - количество нечетных - C++
Помогите написать программу. При формировании списков значения элементов задавать произвольно. Каждый этап алгоритма оформить в виде...

Разработать класс Итератор, методы которого: переход в начало списка, в конец, к текущему элементу списка, к с - C++
Разработать класс Итератор, методы которого: переход в начало списка, в конец, к текущему элементу списка, к следующему элементу, к...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4821 / 3241 / 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
4821 / 3241 / 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
4821 / 3241 / 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;
}
и там подобная ошибка, если не ввести ничего, возвращается что ? ничего - случайные данные
переменные не инициализируются нулями, кроме нескольких случаев, у тебя таких нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2010, 09:36
Привет! Вот еще темы с ответами:

"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка - C++
Здравствуйте! Возникла проблема с программой. Тема: "Сортировка двусвязного списка путем исключения элемента с минимальным значением и...

Вставка в начало списка - C++
Народ, поскажите как реализовать вставку в начало списка? текст вставки в конец сделал, а в начало не пойму как! Вот вставка в конец: int...

Значения не вставляются в начало списка - C++
Доброго времени суток ! Помогите пожалуйста у меня значения не вставляются в начало списка. #include <iostream> using namespace...

Добавление элемента в начало списка - C++
Проблема в том, что выводит 100, 9. Почему не выводит промежуточные значения - не понятно. Вроде бы не должен. #include <stdio.h> ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2010, 09:36
Ответ Создать тему
Опции темы

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