![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.08.2009
Сообщений: 32
|
![]()
Доброго времени суток, уважаемые посетители форума)
Я продолжаю изучать связные списки. Хочу поблагодарить пользователя pu4koff за оказанную помощь в написании функции по заполнению списка по порядку (очень вам благодарен). Теперь передо мной стоит новая задача нужно написать функцию, принимающую список чисел и заменяющую порядок узлов обратным. Я написал некий код. Идея его такова : Запомнить указатель на последний элемент, как last; 1 Найти указатель на предпоследний элемент списка (назовём его i); 2 Последнему указателю, который равен NULL, присвоить значение указателя i (i->link->link = i); 3 Указателю, на который указывает i (i->link), присвоить значение NULL; И так повторять пока i не будет равно head.; И наконец присвоить head значение last (head = last); Не знаю насколько рациональна эта идея, но код, который я написал по ней не работает: Код:
Заранее благодарю за помощь) |
![]() |
![]() |
![]() |
#2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Можно проще. Достаточно менять связи по ходу движения к концу.
Возьмем три указателя a,b и c. a указывает на второй элемент. b - на первый, а c - на третий. Меняем связь у a, чтобы он указывал на b. Теперь приравниваем b к a и a к c. Таким образом сместились вправо. Все это дело продолжается до тех пор, пока c!=NULL. И в конце ставим делаем head->link=NULL. Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.08.2009
Сообщений: 32
|
![]()
Спасибо, Sazary)
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заполнить связный список? | levandowskiy | Общие вопросы C/C++ | 1 | 18.08.2009 09:00 |
C++. Односвязный список. Уничтожить список | Olya90 | Помощь студентам | 2 | 10.06.2009 18:52 |
Инвертировать стэк в C++ | Drozvd | Помощь студентам | 0 | 09.04.2009 03:58 |
Инвертировать таблицу? | Ash | БД в Delphi | 2 | 29.01.2009 02:23 |
Данные-проверка-список (список на другом листе) | Inbox | Microsoft Office Excel | 7 | 26.12.2008 01:43 |