|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2009, 16:30 | #1 |
Регистрация: 24.03.2009
Сообщений: 3
|
Переворот очереди (Delphi)
Нужно сделать переворот очереди(односвязный список), то есть если очередь: 1 2 3 6, то после нажатия кнопки "переворот" должно получиться: 6 3 2 1, ещё раз нажать, снова перевернёт. Первоначально имеется вот такая процедура добавления элементов в очередь:
Код:
Последний раз редактировалось Stilet; 25.03.2009 в 08:47. |
24.03.2009, 16:34 | #2 |
Форумчанин
Регистрация: 09.02.2009
Сообщений: 143
|
вводишь 3ю переменную, потом сначала первую переменную (с одного конца) приравниваешь к 3й нововведенной, затем приравниваешь первой значение последней потом из 3й переносишь значение в последнюю делаешь так в цикле до n элементов / 2
|
24.03.2009, 20:13 | #3 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
2) это НЕ БУДЕТ работать - список это Вам не массив! тут элементы ссылаются друг на друга. kant1288, нужно менять только значение поля .link (ну и в конце обменять местами переменные Last и First) смотрите. пусть в списке 4 элемента. они связаны так: T1.link -> T2 T2.link -> T3 T3.link -> T4 T4.link -> NIL заносим в T4.link := T3; T3.link := T2; T2.link := T1; T1.link := NIL; t := Last; Last := First; First := t; всё. список уже в обратном порядке! |
|
24.03.2009, 20:27 | #4 |
Форумчанин
Регистрация: 09.02.2009
Сообщений: 143
|
почему это не будет ? я же не ссылку на переменную даю а приравниваю её другой пресменной и какая собственно разница массив то же скопище переменных расположенных упорядоченно. ты что то меня не понял я вроде не мудрствовал
|
24.03.2009, 21:24 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
да нет. Это Вы меня не поняли...
хорошо. ответьте тогда на два "простых" вопроса... пусть у нас 4 элемента в списке (смотри пример в моём предыдущем сообщении) вопрос 1. Как поменять местами 2 и 3й элементы? Напишите код замены. Особенно прошу обратить внимание на момент получения адресов 2-го и 3-го элементов... вопрос 2. в первом элементе у нас ссылка, которая указывает на второй элемент списка. После замены местами первого и последнего элемента, куда будет показывать ссылка?! ой.. тут я, кажется, понял... Вы предлагаете заменить в элементах списка только собственно содержимое (данные - в данном случае строковые данные, находящиеся в поле .D) и не трогать ссылки (.link) элементов?!!! в этом случае, второй вопрос отпадает. Но на месте преподавателя я бы такой вариант точно зарезал! Как противоречащий самой идее работы с динамическими списками!! |
25.03.2009, 08:48 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А что за проблема вместо переворота просто считывать их с конца?
I'm learning to live...
|
25.03.2009, 09:30 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
пункт 1) противоречит условиям задачи (там же просят не вывести в обратном порядке, а именно перевернуть очередь... может быть, с этой перевёрнутой очередью будут выполняться какие-то операции.. ну слияние с другой очередью, например... или её что-то... ) 2) вывести односвязный список в обратном порядке задача достаточно ресурсоёмкая! Дело в том, что по последнему элементу нельзя получить предпоследний. по предпоследнему - предпредпоследний.. я понимаю, что можно проходить всё очередь от начала, до i-го элемента, каждый раз уменьшая i но это неэффективно, некрасиво и неверно (см. пункт 1) |
|
26.03.2009, 21:37 | #8 |
Регистрация: 24.03.2009
Сообщений: 3
|
Спасибо большое
|
26.03.2009, 21:38 | #9 |
Регистрация: 24.03.2009
Сообщений: 3
|
за помощь..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод записей очереди ... | counter | Общие вопросы C/C++ | 2 | 19.03.2012 12:43 |
Скачка файлов из инета по очереди | koyotfgthispass | Работа с сетью в Delphi | 17 | 24.12.2008 17:50 |
Запуск экзешников по очереди | Airou | Общие вопросы Delphi | 2 | 03.09.2008 21:15 |
переворот числа! помогите плиззз | Devil | Помощь студентам | 5 | 03.04.2007 19:16 |