Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инверсия списка 
:(
    Опции темы
zmaximka
Дата 26.8.2012, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 27.5.2006
Где: Украина, Одесса

Репутация: нет
Всего: нет



Подскажите пожалуйста, возможна ли инверсия списка без создания нового? 
PM MAIL ICQ   Вверх
DarkProg
Дата 26.8.2012, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Эммм... задача именно инвертировать? Просто на практике проще уже читать с конца, нежели тратить впустую время на то чтобы элементы перекинуть в обратный порядок...


Цитата(zmaximka @  26.8.2012,  17:25 Найти цитируемый пост)
Подскажите пожалуйста, возможна ли инверсия списка без создания нового?  

Да.
1. Берём два элемента(один сначала, второй с конца)
2. Заводим ещё одну переменную(буфер)
3. Пишем одну переменную в буфер
4. Той которой записали значений в буфер присваиваем значение второй переменной
5. второй переменной присваиваем значение буфера

P.S. элементарно же ;)


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
zmaximka
Дата 26.8.2012, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 27.5.2006
Где: Украина, Одесса

Репутация: нет
Всего: нет



Смысл в том, что бы не просто значения списка инвертировать, а сами элементы списка. Задача скорее имеет учебный характер, чем прикладной.

Добавлено через 6 минут и 22 секунды
Вот одно из возможных решений:
Код

List * reverse(List *e1)
{
        if (e1 == 0) return 0;
        if (e1->next == 0) return e1;

        List * rv = reverse(e1->next);

        e1->next->next = e1;
        e1->next = 0;
        return rv;
}

PM MAIL ICQ   Вверх
DarkProg
Дата 26.8.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(zmaximka @  26.8.2012,  17:50 Найти цитируемый пост)
Смысл в том, что бы не просто значения списка инвертировать, а сами элементы списка.

Т.е. есть список, но при этом обращаясь к элементу с индексом 0, получить последний?

Если так, то проще всего написать класс где держать список в нормальном варианте, а на чтение написать обёртку которая будет предоставлять нужное(я бы сделал две возможность чтения, читать в нормальном варианте и инвертированный).

P.S. на C++ давно не писал, щас с ходу не накидаю код...


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Silent
Дата 31.8.2012, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 3.10.2006

Репутация: 1
Всего: 9



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.