![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Sortirovshik |
|
|||
|
Unregistered |
Уже оброщался на этот форум за помощю по этому вопросу, но мне не смогли помоч. Попытаюсь еще разок!
Существеет Mas1 и Маs2. Mas1 содержит числа, а Mas2 указатель (число) на следующую ячейку. Список циклический (последний указатель указывает на первую ячейку) и однонаправленный (понятное дело, что можно идти только в одну сторону). Идем по списку так: берем любое число, ну допустим 8. Под ним указатель 4. Переходим к ячейкам 4. Там число 6 и указатель 5! и.т.д. 9 7 8 6 5 2 3 4 5 1 Задача! Отсортировать значения первого массива переставляя указатели второго массива. Должно получиться так! 9 7 8 6 5 5 3 1 2 4 |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
циклический список невозможно отсортировать...
-------------------- qqq |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Да лаааадно! Ну относительно любого элимента!
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
тогда нужно разорвать список - указать первый элемент
если по-быстрому (в смысле написания алгоритма, а не его работы), то проще всего сортировка пузырьком: идем по списку, находим два соседних элемента, стоящих в неправильном порядке, меняем их местами -------------------- qqq |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Но ведь если мы будем менять 2 указателя местами может случиться такое дело, когда указатель указывает на свою же ячейку!
|
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Тебе же Underdark дал код, чем он тебя не устроил?
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Да вот такая проблема! Я переставляю указатели местами, и получается такая штука: указатель указывает не на следующий элимент, а на себя.
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Во я не понял - чего тут делать перестановками?
Грохаем массив указателей. Делаем копию списка. Сортирим ее. В соответствии с сортировкой строим новый массив указателей. Все. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
я не говорил "поменять местами два указателя", нужно поменять местами два элемента списка, который описывается этими двумя массивами, это совсем разные вещи и так, насколько я понял, проблема свелась к тому, чтобы поменять два соседних элемента местами: в этой операции участвуют четыре элемента: ...A->B->C->D... (B,C - эмеленты, которые надо поменять) нужно сделать так: ...A->C->B->D... для этого нужно перенаправить три указателя: указатель A вместо B должен указывать на C указатель B вместо C должен указывать на D указатель C вместо B должен указывать на B отдельно нужно рассмотреть случай, когда B - первый элемент, тогда: указатель B - на D указатель C - на B и еще нужно объявить C первым элементом Добавлено @ 16:04
... в таких случаях я говорю "а слона-то я и не заметил"... действительно, все эти перестановки ни к чему... -------------------- qqq |
||||
|
|||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Какие могут быть первые - вторые etc. элименты в замкнутых списках? |
|||
|
||||
| maxim1000 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
-------------------- qqq |
||||||
|
|||||||
| Guest |
|
|||
|
Unregistered |
Обясните пожалуцста попонятнее! Нефина не понял! |
|||
|
||||
| Underdark |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 12.7.2004 Где: Ульяновск Репутация: 1 Всего: 2 |
Народ!!! Сейчас я код доработал, НО!!! я опять его реально ещё не проверял (ну нету у меня под рукой компилятора!
Это сообщение отредактировал(а) Underdark - 2.11.2004, 18:46 |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
Эххх. Было бы здорово!
|
|||
|
||||
| Underdark |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 12.7.2004 Где: Ульяновск Репутация: 1 Всего: 2 |
Всё, кажись готово
Алгоритм сложный, поэтому лучше воспользоваться предыдущими советами, но если необходимо составить программу не вводя новые массивы, а сортируя массив указателей, то это то что надо:
Надеюсь, я не опоздал с кодом... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
SPASIBO! BUDEM PROBAVAT'!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |