![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
![]()
Здравствуйте, уважаемые форумчане! Нужна помощь в доработке моей первой программы на Delphi.
Есть задача на работу с двунаправленным циклическим списком без головного элемента: Описать класс Spisok, в который входят следующие методы: Создание пустого списка. Подсчет количества элементов списка. Вывод на экран содержимого списка в виде таблицы. Вставка элемента в начало или в конец списка (оба варианта). Исключение элемента из начала или конца списка (оба варианта). Сохранение списка в файле. Восстановление списка из файла. Уничтожение списка с освобождением памяти. Описать класс Spis2 , потомок класса Spisok, в который добавить методы: Включить новый элемент вместо i-го по номеру элемента; Исключить элемент с соответствующим ключом; Поменять местами элемент с максимальным нечетным значением ключа и первый элемент списка. Есть код однонаправленного списка с нужными процедурами. Помогите разобраться и переделать этот код для двунаправленного списка. Вот попытка переделать процедуру добавления элемента в конец. Ошибок никаких не выдало, но и пр нажатии на кнопку ничего не происходит Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 14.02.2013
Сообщений: 222
|
![]()
А где извиняюсь форма uMain.pas
Код:
Код:
И потом что именно вы передаете в переменной first - указатель на начало списка? Последний раз редактировалось netpolice; 16.04.2013 в 13:16. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
![]()
спасибо за поправку, сейчас попробую разобраться. архив перезалил
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 14.02.2013
Сообщений: 222
|
![]()
У Вас в rar-е все практически готово нужно, только добавить одну строчку el^.prev:=temp; Сами догадаетесь куда?
![]() Да и еще: в двунаправленных списках, помимо начала обычно известно и конец списка. Если у вас так то задача проще решается... А я знаете че заметил: Список то циклический, тогда Вы правы, что при нулевом списке, первый элемент добавляется со ссылками на себя, но в таком случае у нас нет ни начала ни конца списка. И как мы добавим в конец элемент? Последний раз редактировалось netpolice; 16.04.2013 в 16:17. |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
![]() Цитата:
На другом форуме видел такой пример ссылка вроде там используется двунаправленный циклический список, но сделав так на своей программе вообще не работает. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
любой список предполагает добавление до/после определенного элемента.
Добавление в конец = найти последний + добавить после. У нас нет понятия последний. => нельзя добавить в конец. Но мы всегда можем вставить до(или после) некоторого. Если мы знаем (можем узнать) после которого вставлять то вставляем именно туда. Если мы не может сказать после которого (или до которого) вставлять, значим нам БЕЗРАЗЛИЧНО это самое место вставки. Значит можно вставлять в любое удобное место.
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#7 | ||
Форумчанин
Регистрация: 14.02.2013
Сообщений: 222
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
Цитата:
Хотя для вставки оно тоже годится. Если мы можем искать не перебором, а каким-то другим способом основанном на УПОРЯДОЧЕННОСТИ списка, то тем самым мы всегда можем сказать в какое именно место (до/после вполне определенного) мы должны вставлять. Место определяется из требования сохранить упорядоченность. Если упорядоченности нет, то место вставки абсолютно безразлично и выбирается она обычно наиболее простым способом (берется первый попавшийся элемент который является точкой входа и вставка идет до/после оного).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 17.04.2013 в 09:58. |
||
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 07.04.2012
Сообщений: 21
|
![]()
Ребята, легче не стало! Уже устал пробовать. Может кто подскажет пример кода или возьмётся доделать работу за вознаграждение, работу нужно сдать к концу следующей недели.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++. Двунаправленный список | M_Asja | Помощь студентам | 4 | 15.01.2013 18:47 |
Двунаправленный список | Вельвет | Помощь студентам | 1 | 10.01.2012 14:14 |
двунаправленный список | Максикок | Помощь студентам | 3 | 02.05.2011 10:34 |
Двунаправленный список | grave123 | Общие вопросы C/C++ | 1 | 08.03.2010 10:44 |
Двунаправленный список | F_A_N_Alex | Помощь студентам | 0 | 01.10.2009 00:35 |