Род Стивенс

Книги → Delphi. Готовые алгоритмы → Глава 2. Списки

// first_day указывает на ячейку первого дня месяца.

// num_days - это количество дней месяца.

procedure ListMonth(first_day : PDayCell; num_days Integer); var

ptr : PDayCell;

i : Integer; begin

ptr ;= first_day;

for 1 := 1 to num_days do

begin

PrintEntry(Format ('%d:%s1,[i,ptrA.Value]));

ptr".NextCell;

Ptr

end;

end;

Циклические списки также позволяют получить доступ ко всему списку, начи­ная с любой позиции. Это придает списку некоторую симметрию. Программа мо­жет работать со всеми элементами списка одинаково.

PListCell) ;'

procedure ShowList(start_cell

var

ptr : PListCell; begin

ptr := start_cell; repeat

ShowMessage(ptrA.Value) Ptr := ptr*.NextCell; until (ptr=start_cell); end;

Двусвязные списки

Вы, возможно, заметили, что при рассмотрении связанных списков большин­ство операций было определено на основе каких-либо действий после указанной ячейки в списке. Если задана определенная ячейка, очень просто добавить или удалить ячейку после нее или перечислить идущие за ней. Но не так легко удалить саму ячейку, вставить новую перед ней или перечислить находящиеся перед ней ячейки. Однако небольшое изменение 'кода позволит выполнить и эти операции.

Добавьте к каждой ячейке новое поле указателя, ссылающегося на предыду­щую ячейку в списке. С помощью этих новых полей вы можете создать двусвязный список, который позволит исследовать элементы в обратном порядке (см. рис. 2.8). Теперь не составит труда удалить или вставить новую ячейку перед заданной и пе­речислить ячейки в любом направлении.

Тип записи TDoubleListCell, используемый для подобных списков, может быть определен следующим кодом: ,

type

PDoubleListCell = ''TDoubleListCell;

TDoubleListCell = record Value : String[20];

NextCell : PDoubleListCell;

PrevCell : PDoubleListCell; end;

Часто бывает полезно сохранять указатели на начало и конец двусвязного списка. Тогда вы сможете легко добавлять элементы с обеих сторон списка. Могут пригодиться метки в начале и конце списка. Тогда вам не нужно будет заботиться о том, работаете ли вы с его началом, серединой или концом.

← предыдущая следующая →

Страницы раздела: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Публикация компанией Dropbox кода Zulip – средства общения для IT-разработчиков

20.11.2015
Одной из одобрительно встреченных программистами инициатив, реализующихся в рамках акции Hack Week, стала публикация исходного кода приложения Zulip – веб-приложения для общения между собой разработчиков в сфере IT-технологий.

Объединение ОС Android и Chrome

17.11.2015
Слухи об объединении двух крупнейших ОС компании Google, Android и Chrome, гуляют по Интернету уже более 5 лет, но до сих пор этого не случилось, хотя очевидно, что с течением времени эти ОС становятся всё более похожими: так, в последнее время появилось немало Android-устройств, к которым прилагаются клавиатуры, а Chrome OS «научилась» работать с сенсорными экранами.

Конференция Linux Piter 2015

15.11.2015
Уже почти через неделю в Санкт-Петербурге впервые в истории пройдёт конференция, посвящённая проблемам свободного программного обеспечения – Linux Piter 2015.