Создание структуры связанного списка в Perl - PullRequest
0 голосов
/ 29 января 2019

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

Конечно, Perl должен иметь способ сделать это?Очень хотелось бы знать, как.

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы можете сделать это в основном так же, как и в C, но используйте ссылки вместо указателей и хэши вместо структур.

Но в Perl обычно вы неЭто необходимо, потому что встроенные в Perl массивы довольно умные и быстрые.Они растут автоматически и уже выполняют большинство функций связанного списка, таких как добавление и удаление произвольных элементов с помощью splice, а также добавление и удаление из передней и задней части массива с помощью pop, push, shiftunshift.И, в отличие от связанного списка, вы получаете O (1) произвольный доступ.Подробнее см. perlfunc .

Вы также этого не делаете, потому что написание собственных структур данных в Perl, как правило, довольно медленное.Массивы Perl написаны на C, но ваш связанный список будет написан на гораздо более медленном Perl и будет занимать гораздо больше памяти.Хотя алгоритм может быть более эффективным, реализация будет медленной.В терминах информатики константа будет очень большой.Конечным результатом являются специализированные структуры данных, такие как связанные списки и деревья, которые имеют смысл, только когда вы начинаете изучать сотни тысяч или миллионы элементов.

Другой вариант - использовать библиотеку связанных списков, написанную на C. Вы можете воспользоваться библиотеками C, используя вещь под названием XS, которая действует как мост между кодом C и кодом Perl .Но это не самая простая вещь для использования.

0 голосов
/ 29 января 2019

Вы не склонны видеть программистов на Perl, создающих такие вещи, как связанные списки.Возможно, вы захотите прочитать perllol и perldsc , чтобы узнать о более типичных структурах данных "Perlish".

Сказав это, вы можете посмотреть на источник LinkedList :: Single , чтобы увидеть один способ написать односвязный список в Perl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...