|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.09.2022, 16:22 | #1 |
Пользователь
Регистрация: 06.01.2021
Сообщений: 52
|
Придумал алгоритм помогите улучшить
Пытаюсь разобраться с концепцией односвязного списка, задача - "перевернуть" его.
Для этого мне потребовалось аж два вспомогательных указателя. Пока не могу придумать способ лучше. Только не пишите плиз готовые решения, мне интересно именно подхватить какую-то идею и дальше уже придумать, как сделать Он работает!!! Код:
Нужно вывести весь получившийся односвязный список, потом инвертировать его, и вывести заново. Меня интересует процедура reverselist. Моя логика такая: у меня один основной указатель p1 и два вспомогательных p2, p3 сначала я кладу в p3 адрес следующего элемента, а в p2 - текущего меняю ссылку next так, чтобы она указывала на элемент p2, ну и p3 как раз был нужен чтобы сохранился адрес следующего элемента и я двигаю p1 к p3, и т.д., циклический процесс, пока не будет NULL (nil). Последний раз редактировалось iXNomad; 12.09.2022 в 16:28. |
12.09.2022, 16:24 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Про локальные переменные почитайте.
E-Mail: arigato.freelance@gmail.com
|
12.09.2022, 16:35 | #3 |
Пользователь
Регистрация: 06.01.2021
Сообщений: 52
|
Точно, теперь эти два указателя, получается, в стеке хранятся?
|
12.09.2022, 17:19 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Еще можно так, но любитель asm вставок в Pascal у нас в других темах водятся
Код:
Последний раз редактировалось macomics; 12.09.2022 в 17:25. |
12.09.2022, 18:06 | #5 | |
Пользователь
Регистрация: 06.01.2021
Сообщений: 52
|
Цитата:
Но очень интересно. Если это даёт возможность экономить память и увеличивает скорость работы - я только за использование низкоуровневых фишек. |
|
12.09.2022, 18:15 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Этим надо пользоваться очень осторожно. Оно не совсем экономит память. У вас экономии на переменных много не выйдет. Для глобальных переменных выделяется секция памяти. Минимальный размер секции равен 1 странице памяти. От того, что вы избавитесь от 1, 2 глобальных переменных ничего не изменится. Страницы памяти у процессора фиксированного размера.
А вот скорость работы может обеспечить, но надо использовать вставки в нужных местах и по делу. Особенно это касается использования технологий параллельных вычислений (SIMD - одна инструкция для группы данных сразу). |
12.09.2022, 18:22 | #7 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Что то не так в моей голове, но, например:
Написали функционал для создания односвязного списка. Данные для списка получаете из файла и, в цикле, добавляете в список в порядке поступления (функция addList(), например). Используем полученный список и функционал для переворачивания списка. Надо, что бы на функционал, формирующий список, данные поступали из исходного списка. Т.е. использовать функцию чтения списка (readList(), например) а не файла. Или тут переворачивать надо на месте? PS: Пример работы со списком приводится в любимой мной книжке: Т.А. Павловская, Программирование на ЯВУ. Паскаль. Была в списке литературы в соответствующем разделе.
Как-то так, ...
|
12.09.2022, 18:42 | #8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Еще вариант вашей функции. Попробуйте решить тоже самое с использованием рекурсии.
|
14.09.2022, 11:22 | #9 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Календарь надо переворачивать было :-D, простите, не удержался
from dark to light)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать чтобы символы пробел и Ентер не записывались? Вот как я придумал но, что-то не работает | Aqua77 | Общие вопросы C/C++ | 4 | 05.08.2015 03:52 |
JAXB придумал дьявол | Voipp | Общие вопросы по Java, Java SE, Kotlin | 1 | 11.10.2013 04:28 |
так и не придумал | Giku | Windows | 4 | 11.01.2013 03:57 |
Улучшить алгоритм нахождения элемента, чаще всего повторяющегося в возрастающем массиве | nitrolighter | Помощь студентам | 6 | 18.10.2009 13:33 |
составил программу ,но ненравиться механизм работы.помогите улучшить | Василийпрог | Помощь студентам | 1 | 23.11.2008 11:38 |