Реализация циклических списков

Проблема

Требуется создать циклический список и организовать работу с ним.

Решение

Воспользуйтесь функциями 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



2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: