![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 24.03.2009
Сообщений: 3
|
![]()
Нужно сделать переворот очереди(односвязный список), то есть если очередь: 1 2 3 6, то после нажатия кнопки "переворот" должно получиться: 6 3 2 1, ещё раз нажать, снова перевернёт. Первоначально имеется вот такая процедура добавления элементов в очередь:
Код:
Последний раз редактировалось Stilet; 25.03.2009 в 08:47. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 09.02.2009
Сообщений: 143
|
![]()
вводишь 3ю переменную, потом сначала первую переменную (с одного конца) приравниваешь к 3й нововведенной, затем приравниваешь первой значение последней потом из 3й переносишь значение в последнюю делаешь так в цикле до n элементов / 2
|
![]() |
![]() |
![]() |
#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; всё. список уже в обратном порядке! |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 09.02.2009
Сообщений: 143
|
![]()
почему это не будет ? я же не ссылку на переменную даю а приравниваю её другой пресменной и какая собственно разница массив то же скопище переменных расположенных упорядоченно. ты что то меня не понял я вроде не мудрствовал
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
да нет. Это Вы меня не поняли...
хорошо. ответьте тогда на два "простых" вопроса... пусть у нас 4 элемента в списке (смотри пример в моём предыдущем сообщении) вопрос 1. Как поменять местами 2 и 3й элементы? Напишите код замены. Особенно прошу обратить внимание на момент получения адресов 2-го и 3-го элементов... вопрос 2. в первом элементе у нас ссылка, которая указывает на второй элемент списка. После замены местами первого и последнего элемента, куда будет показывать ссылка?! ой.. тут я, кажется, понял... Вы предлагаете заменить в элементах списка только собственно содержимое (данные - в данном случае строковые данные, находящиеся в поле .D) и не трогать ссылки (.link) элементов?!!! ![]() в этом случае, второй вопрос отпадает. Но на месте преподавателя я бы такой вариант точно зарезал! Как противоречащий самой идее работы с динамическими списками!! |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А что за проблема вместо переворота просто считывать их с конца?
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
пункт 1) противоречит условиям задачи (там же просят не вывести в обратном порядке, а именно перевернуть очередь... может быть, с этой перевёрнутой очередью будут выполняться какие-то операции.. ну слияние с другой очередью, например... или её что-то... ) 2) вывести односвязный список в обратном порядке задача достаточно ресурсоёмкая! Дело в том, что по последнему элементу нельзя получить предпоследний. по предпоследнему - предпредпоследний.. я понимаю, что можно проходить всё очередь от начала, до i-го элемента, каждый раз уменьшая i но это неэффективно, некрасиво и неверно (см. пункт 1) ![]() |
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 24.03.2009
Сообщений: 3
|
![]()
Спасибо большое
|
![]() |
![]() |
![]() |
#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 |