Perl 实现一个堆栈
在Perl中,堆栈是一种线性数据结构,遵循 LIFO (后进先出)或 FILO (先进后出)的顺序。更简单地说,堆栈是一个数组,其中的插入和删除只发生在称为堆栈顶部的一端。
推入 是将元素插入堆栈的过程。
弹出 是将堆栈中最顶端的元素移除的过程。
创建一个堆栈
在Perl中创建一个堆栈是相当简单的。我们所要做的就是声明一个数组。
这个堆栈可以是空的,如下所示。
或者它可以被初始化。
向堆栈中推送项目
推送可以用 push() 函数或 splice() 函数来完成。
- 使用push()推送
语法: push(@stack, list);
- 使用splice()推送。
-
@stack – 要进行推送的堆栈。
- list – 要推入堆栈的元素。这些元素可能是标量、数组、哈希或这些元素的任何组合。
示例:
输出:
- 使用splice()推送。
语法: splice(@stack, scalar(@stack), 0, list);
参数:
- splice()函数在@stack的末尾添加’list’。
- ‘list’可以是一个标量,一个数组或一个哈希。
示例:
输出:
从堆栈中弹出元素
弹出可以用pop()函数或splice()函数来完成。
- 使用pop()进行弹出。
语法: $popped_element = pop(@stack);
参数:
- pop()函数返回弹出的元素。
- $popped_element包含从堆栈中弹出的元素。
示例:
输出:
- 如果堆栈是空的,将返回undef。undef类似于Java中的NULL和Python中的None。然而,不会产生错误。
示例:
输出:
- 使用 splice() 进行弹出 : 。
语法。 $popped_element=splice(@stack, -1);
参数
- splice()函数删除堆栈的最后一个元素并返回。
- $popped_element存储返回的值。
例子
输出
- 如果堆栈是空的,会产生一个错误。下面的代码引发了一个错误。
Runtime Error:
Useless use of a variable in void context at /home/59c7c19979aa9e46564cd145d5fe5601.pl line 6.
Modification of non-creatable array value attempted, subscript -1 at /home/59c7c19979aa9e46564cd145d5fe5601.pl line 10.