Род Стивенс

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

Массивы являются одним из самых валяных инструментов программирования. Они позволяют быстро и без особого труда управлять большими группами объектов, используя стандартные приемы. К сожалению, массивы не обладают достаточной гибкостью. Перераспределение элементов массива может быть сложным и зани­мать много времени. Например, чтобы переместить элемент из одного конца мас­сива в другой, необходимо перестроить весь массив. Нужно сдвинуть каждый эле­мент на одну позицию, чтобы заполнить оставшуюся от другого элемента ячейку. Затем необходимо поместить элемент в его новую позицию.

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

В этой главе описываются методы создания динамических списков в Delphi. Различные виды списков имеют разные свойства. Некоторые достаточно Просты и функционально ограничены, другие же, такие как циклические, двусвязные списки и списки с указателями, сложнее и поддерживают более развитые средства управления данными.

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

Основные понятия о списках

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

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

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

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

Последующие разделы посвящены связанным спискам (linked list), которые используют указатели для создания очень гибких структур данных. Вы можете добавлять или удалять элементы из любой части связанного списка с минималь­ными усилиями. В этих разделах также рассматриваются некоторые разновиднос­ти связанных списков, такие как циклические, двусвязные и списки со ссылками.

← предущий раздел следующая →

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