Шаг 11.
Использование хэш-массива для построения связанного списка

    На этом шаге мы проиллюстрируем использование хэш-массива для создания простейших структур данных.

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


Рис.1. Графическое представление списка

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

%linked_list = (
"начало" => "первый",
"первый" => "третий",
"третий" => ""
);

# Добавление элемента со значением "второй"
# после элемента со значением "первый".
$temp = $linked_list{"первый"};    # Запомнили старый указатель.
$linked_list{"второй"} = $temp;    # Добавили новый элемент.
$linked_list{"первый"} = "второй"; # Указатель на новый элемент.

$item = $header;
# Печать нового связанного списка.
While ($linked_list{$item}) {    # Пока не дойдем до пустой строки,
print $linked_list{$item}, "\n"; # будем печатать значения элементов.
$item = $linked_list{$item};
}
Текст этого примера можно взять здесь.

    Результатом выполнения программы будет печать значений элементов нового связанного списка в следующем порядке:

   первый
   второй
   третий

    На следующем шаге мы начнем рассматривать основные операторы языка программирования Perl.




Предыдущий шаг Содержание Следующий шаг