Реализация циклических списков
Проблема
Требуется создать циклический список и организовать работу с ним.
Решение
Воспользуйтесь функциями
unshift и
pop (или
push и
shift) для обычного массива.
unshift(@circular, pop(@circular)); # Последний становится первым
push (@circular, shift(@circular)); # И наоборот
Комментарий
Циклические списки обычно применяются для многократного выполнения одной и той же последовательности
действий — например, обработки подключений к серверу. Приведенный выше фрагмент не является полноценной
компьютерной реализацией циклических списков с указателями и настоящей цикличностью.
Вместо этого мы просто перемещаем последний элемент на первую позицию, и наоборот.
sub grab_and_rotate (\@ ) {
my $listref = shift;
my $element = $listref->[0];
push(@listref, shift @$listref);
return $element;
}
@processes = ( 1, 2, 3,4, 5);
while (1) {
$process = grab_and_rotate(@processes);
print "Handling process $process\n":
sleep 1;
}
См. такжеОписание функций
unshift и
push
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|