Род Стивенс

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

Обычные связанные списки позволяют исследовать элементы только в одном порядке. Используя указатель PrevCell, вы можете создать двусвязный список, который позволяет продвигаться по списку в обратном порядке. Можно развить этот подход далее, добавив больше указателей на другие структуры данных.

Набор связей, который задает какой-либо порядок исследования списка, назы­вается потоком. Не путайте этот термин с потоком многозадачности в Windows NT.

Список может содержать любое число потоков, хотя существует определенное число, после которого увеличение их количества будет просто бессмысленным. По­ток, сортирующий список служащих по фамилии, есть смысл создавать в том слу­чае, если ваше приложение часто использует этот запрос, в отличие от сортировки по отчеству, которая вряд ли когда-то потребуется.

Использовать потоки не всегда выгодно. Например, поток, упорядочивающий сотрудников по принадлежности к полу, не целесообразен, потому что этот порядок легко реализовать и без помощи потока. Для того чтобы составить списки служа­щих в соответствии с полом, нужно просто исследовать список любым другим по­током, печатая фамилии женщин, а затем повторить обход еще раз, печатая фами­лии мужчин. Чтобы получить такой реестр, вам нужно сделать всего два прохода по' списку.

Сравните этот случай с тем, когда необходимо создать список служащих про фамилии. Если список не имеет потока фамилий, вам придется найти ту, которая будет в списке первой, затем фамилию, появившуюся второй, и т.д. Этот процесс имеет сложность порядка 0(N2) и, безусловно, менее эффективен, чем сортировка по полу со сложностью порядка O(N).

В общем случае создание потока требуется тогда, когда вам нужно часто его использовать, а формировать тот же порядок каждый раз достаточно сложно. По­ток не нужен, если его всегда легко сформировать заново.

Программа Threads демонстрирует простой связанный список сотрудников. Введите фамилию, имя, номер социального страхования, пол, специальность но­вого служащего. Затем нажмите кнопку Add, чтобы добавить информацию о со­труднике в список.

Программа содержит потоки, которые упорядочивают список по фамилии слу­жащего о А до Z и наоборот, по номеру социального страхования и специальности в прямом и обратном порядке. Для выбора потока, с помощью которого программа будет отображать список, вы можете использовать дополнительные кнопки. На рис. 2.10 показано окно программы Threads со списком служащих, упорядоченным по фамилии.

Класс TThreadedList, используемый программой Threads, определяет ячейки следующим образом:

TThreadedListCe11 = record

/ / Данные.

LastName : String[20] ; ,

FirstlTai.,3 : String [20] ;

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

Страницы раздела: 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.