Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Ден90
2 / 2 / 2
Регистрация: 19.11.2012
Сообщений: 55
1

Реверс списка

23.11.2012, 01:39. Просмотров 1652. Ответов 4
Метки нет (Все метки)

Скажите пожалуйста правильна ли логика реверса
C++
1
2
3
4
5
6
7
8
9
10
11
12
void IntList::Revers()
{
   ListItem *tmp, *ptr = NULL;
   while(last->next==0)
   {
   tmp = first->next;
   first->next = ptr;
   ptr = first;
   first = tmp;
   }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 01:39
Ответы с готовыми решениями:

Реверс списка
Есть односвязный список. Требуется создать реверс списка, после чего продлить...

Реверс двусвязного списка
Столкнулся с задачей написать функцию реверса двусвязного списка. Часа 3 сушил...

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код...

Реверс в файлах
Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и...

Реверс числа
Напишите функцию, выполняющую реверсию целого положительного числа, не...

4
OhMyGodSoLong
~ Эврика! ~
1246 / 995 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
23.11.2012, 02:04 2
В общем, да, но: 1) вы учли случай пустого списка? 2) first ведь в конце равен NULL, а должен получить значение ptr; 3) last меняется как-то автоматически, что он способен прервать цикл?
1
Ден90
2 / 2 / 2
Регистрация: 19.11.2012
Сообщений: 55
23.11.2012, 02:31  [ТС] 3
Не могли бы вы написать исправленный вариант? Не догоняю(
0
OhMyGodSoLong
~ Эврика! ~
1246 / 995 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
23.11.2012, 03:02 4
Не, так не пойдёт. Смотрите, что вам надо учесть для каждого из этих пунктов.
  1. Проверяем, если список пустой — выходим сразу же из функции.
  2. first = tmp; вот эту штуку на последней итерации делать не надо, но так как это было бы сильно геморройно делать проверку, то просто восстановите после цикла значение first из ptr; почему — попробуйте на бумажке нарисовать работу алгоритма;
  3. У вас условие цикла идёт по last->next; это в принципе сработает для остановки цикла, но ведь last вам надо переместить в конец списка после окончания цикла, а не оставить его указывать на бывший конец списка, который теперь начало. Запомните, например, перед циклом текущее начало списка, потом после цикла его присвоите last.
1
Ден90
2 / 2 / 2
Регистрация: 19.11.2012
Сообщений: 55
23.11.2012, 03:11  [ТС] 5
Огромное спасибо!!!!!
И отдельное спасибо что не просто написали код!
0
23.11.2012, 03:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 03:11

Реверс массива
Нужно сделать реверс чисел в массиве, написал код, но выдаёт при вводе 1 2 3 4...

Бит реверс
Вводится число в десятичной системе надо записать его в двоичной и перевернуть....

Реверс строки
Привет ребят, вообщем я первокурсник и только разбираюсь с основами, у меня...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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