Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2020, 05:52   #1
kleo1
Новичок
Джуниор
 
Регистрация: 19.03.2020
Сообщений: 1
По умолчанию Рекурсия С++

Здравствуйте. Нужна помощь с рекурсией в Linked list.

Имеются: struct IntNode (private: int data; IntNode *next) и class IntList (private: IntNode *head).
Нужно написать 2 программы которые будут совместно искать в List соответствующее значение и изменять все data в предыдущих nodes рекурсивно на количество node до указанного значения, а data после указанного значения оставлять неизменными.

Напимер, list: 5->7->3->2->1->4
list.distanceFrom(2);
list: 3->2->1->2->1->4

Я застряла на обновлении значений data. Мне нельзя использовать циклы в программе. Буду признательна, если подскажите как мне обновить значения data до указанного значения используя только рекурсию.

Что у меня есть:
void IntList:: distanceFrom(int key) {
if (head == nullptr){
return;
}
searchAndModify(head, key);
return;
}

int IntList::searchAndModify(IntNode *curr, int key) {
int count = 0;
if(curr->data != key && curr->next == nullptr){
curr->data = 1;
return curr->data;
}
if(curr->data != key){
count = count +1;
return searchAndModify(curr->next, key);
curr->data = curr->data - count;
}
return curr->data;
}
kleo1 вне форума Ответить с цитированием
Старый 25.03.2020, 19:09   #2
Dezmond13_87
Новичок
Джуниор
 
Регистрация: 25.03.2020
Сообщений: 2
По умолчанию

Можно вот так попробовать. Или я не понял условия задачи
int IntList::searchAndModify(IntNode *curr, int key) {
int count = 0;
if(curr->data != key && curr->next == nullptr){
curr->data = 1;
return 0;
}
if(curr->data != key){
count = searchAndModify(curr->next, key);
if(count > 0)
{
curr->data = count;
++count;
}
return count;
}
return 1;
}
Dezmond13_87 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия lialia Паскаль, Turbo Pascal, PascalABC.NET 1 16.04.2013 22:24
Рекурсия unbanned Паскаль, Turbo Pascal, PascalABC.NET 7 19.01.2012 11:25
рекурсия виктория23 Помощь студентам 1 12.01.2012 21:49
Рекурсия dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 4 29.08.2010 14:14
рекурсия Lena neznayka Помощь студентам 2 16.06.2010 20:46