Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 3

Как в односвязном списке поменять соседние элементы

07.03.2013, 16:37. Показов 2948. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я писал самостоятельную реализацию односвязного списка и для сортировки мне необходимо поменять два соседних элемента. На форуме нашел тему по этому вопросу, но там замена осуществлялась с исползованием предшествующего этим элементам еще одного третьего элемента (примерно так prev->first->second), но чтобы найти этот прев надо пройтипо списку до него, а мне надо написать без пробега по списку. Подскажите возможно ли это?


Вот тот неоптимальный вариант:
Java
1
2
3
4
5
6
7
8
9
10
11
12
        if(first==MyList.head){
            MyList.head=second;
            first.next=second.next;
            second.next=first;
        }else{
            Node prev=MyList.head;
            while(prev.next!=first){
                prev=prev.next;
            }
            prev.next=second;
            first.next=second.next;
            second.next=first;
Если это невозможно, то что оптимальнее: описанный выше метод или просто обмен значениями(их 7 штук)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2013, 16:37
Ответы с готовыми решениями:

Поменять соседние элементы местами из файла
Всем привет. Ребят, нужно поменять местами соседние элементы из файла местами. Код есть, вроде все верно, но что-то не тянет. Помогите...

Рекурсия: максимальный элемент в односвязном списке
Хэй Народ, я начинающий, помогите плиз. Изучаю односвязные списки, задача состоит в том, что надо создать метод который должен найти...

Как поменять элементы в односвязном списке
Мне надо поменять местами элементы max и min,я запуталась, как это надо делать,если есть возможность,помогите.Так же я хотела объединить...

2
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
07.03.2013, 20:10
без прохода никак
пример:
Bash
1
2
3
4
element1(null, element2)
element2(element1, element3)
element3(element2, element4)
element4(element3, null)
свап 2 и 3:
участвуют 2 элемента 2й и 3й, а также ссылки 1,2,3,4
результат:
Bash
1
2
3
4
element1(null, element3)
element3(element1, element2)
element2(element3, element4)
element4(element2, null)
итого: изменились проперти у 4 элементов
а так как в связанном списке ID вычисляется во время прохода по нему, то вам полюбос потребуется 1 проход чтобы собрать все ссылки на 4 элемента для выполнения обмена
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 3
07.03.2013, 22:21  [ТС]
mutagen, да я это понимаю, все уже перепробовал, думал может умные люди что то знают(при таком пробеге просто при пузырьковой сортировке что-то вроде N в кубе получается). Тогда как лучше, моим методом или заменой значений, что оптимизированней?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.03.2013, 22:21
Помогаю со студенческими работами здесь

В односвязном списке поменять местами крайние элементы
что есть у меня: #include <iostream> #define N 6 using namespace std; struct Node { int d; Node*next; }; Node *...

Как в односвязном списке поменять местами один элемент и следующий за ним?
Напр., что есть: 0 1 2 3 4 5 6 7 должно быть: 0 1 2 3 4 6 5 7

Поменять местами первый и последний узел в односвязном циклическом списке с указателем на хвост
Здравствуйте! Нужно написать процедуру, которая меняет местами первый и последний узел в односвязном циклическом списке с указателем...

Как в массиве строк поменять соседние элементы местами?
Как в массиве строк поменять соседние элементы местами? Предложение разбито на слова (в массив строк) , как соседние слова поменять...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru