perl - 在 Perl 中创建链表结构
问题描述
在 C 中,您可以创建自己的结构,并从那里创建一个链表,其中结构中的记录将指向下一条记录以及上一条记录。
Perl 肯定有办法做到这一点吗?很想知道如何。
谢谢
解决方案
您可以按照在 C 中执行此操作的方式基本相同,但使用引用而不是指针和散列而不是结构。
但是在 Perl 中通常你不必这样做,因为 Perl 的内置数组非常聪明和快速。它们自动增长,并且已经完成了链表可以做的大部分事情,比如用 、 、 和 来添加和删除任意元素,以及从splice
数组的前面和后面添加和删除。而且,与链表不同,您获得 O(1) 随机访问。有关更多信息,请参见perlfunc。pop
push
shift
unshift
您也不要这样做,因为在 Perl 中编写自己的数据结构往往很慢。Perl 数组是用 C 编写的,但是您的链表将用慢得多的 Perl 编写并消耗更多的内存。虽然该算法可能更有效,但实现会很慢。在计算机科学术语中,常数将非常大。最终结果是像链表和树这样的专用数据结构只有在您开始处理数十万或数百万个元素时才有意义。
您的另一个选择是使用用 C 编写的链表库。您可以使用称为 XS 的东西来利用 C 库,它充当 C 代码和 Perl 代码之间的桥梁。但这不是最容易使用的东西。
推荐阅读
- php - 第一个索引中的数组检索问题 - PHP
- python - 在 Travis CI 上的 docker 容器中运行 Django 测试
- build - stm32 F207zg 的 mbed.h 库
- python - 使用 URL 列表提取数据
- javascript - 使用数据进行实时数学反应
- java - 如果在现有的重型 Wildfly 服务器(或一般情况下)中引入 Spring Boot Parent 将消耗多少内存?
- google-bigquery - BigQuery - 产品级别的 SUM 值并添加到标题级别 - 嵌套表
- python - 如何将十六进制字符串转换为文本
- aix - AIX 上的共享文件夹
- php - 将图片的Url保存到数据库并获取图片