![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| peter86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
Помогите написать процедуру, создающую кольцевой двунаправленный список.
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
что значит "создающую"?
тебе нужно определить 1. структуру данных (на основе record), содержащую данные и указатели на предыдущий-следующий узел списка 2. написать процедуру инициализации таким образом, что бы голова указывала на хвост и наоборот. для списка из одного элемента он будет указывать сам на себя 3. написать процедуры, добавляющие/удаляющие элемент списка 4. процедуру обхода списка. вообще-то кольцевой список предопределенного размера можно создать на основе массива сам что-нить попробовал? какие возникли проблемы? |
|||
|
||||
| peter86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
Написать процедуру, например - Procedure Create(var L:DP);
Где DP = ^DType; DType = record Inf:Integer; Next:DP; Prev:DP; end; В этой процедуре с клавиатуры вводятся N чисел, которые становятся элементами списка; В результате L указывает на начало списка. |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Практически идентично созданию обычного двухсвязного списка, только добавляется еще установка first^.prev и last^.next:
Это сообщение отредактировал(а) volvo877 - 3.6.2008, 22:01 |
|||
|
||||
| peter86 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 31.3.2008 Репутация: нет Всего: нет |
volvo877, а разве в двусвязном кольцевом списке prev первого элемента не ссылается на последний?
И еще может есть у кого-нибудь процедуры добавления и удаления элемента, после указанного. Например Procedure Del(P:DP; N:Integer); Где P - элемент списка, после которого следует добавить N. |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
||||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |