Stack en Perl es una estructura de datos lineal que sigue el orden LIFO (Last In First Out) o FILO (First In Last Out).
En términos más simples, una pila es una array en la que la inserción y la eliminación tienen lugar en un solo extremo llamado la parte superior de la pila.
Empujar es el proceso de inserción de elementos en una pila.
Hacer estallar es el proceso de eliminación del elemento superior de una pila.
Crear una pila en Perl es bastante simple. Todo lo que tenemos que hacer es declarar una array.
La pila podría estar vacía, de la siguiente manera:
@stack;
O podría ser inicializado:
@stack = (1, 2, 3);
El empuje se puede realizar mediante la función push() o la función splice() .
- Empujando usando push() :
Sintaxis: empujar(@stack, lista);
Parámetros:- @stack: la pila en la que se realizará el empuje.
- lista: los elementos que se insertarán en una pila. Estos elementos pueden ser escalares, arrays, hash o cualquier combinación de estos.
Ejemplo:
#!/usr/bin/perl
# Intitialising the Stack
@stack
= (1..3);
# Original stack
print
"Original Stack: @stack"
;
# Scalar to be pushed
$scalar
=
"scalar"
;
# Array to be pushed
@array
= (
"a"
,
"r"
,
"r"
,
"a"
,
"y"
);
# Hash to be pushed
%hash
= (
"Geeks"
=> 10,
"for Geeks"
=> 20);
# scalars, arrays and hashes can be
# inserted at the same time
push
(
@stack
, (
$scalar
,
@array
,
%hash
));
# Updated Stack after
# Push operations
print
(
"\nUpdated Stack: @stack"
);
Producción:Original Stack: 1 2 3 Updated Stack: 1 2 3 scalar a r r a y Geeks 10 for Geeks 20
- Empujando usando splice() :
Sintaxis: splice(@stack, escalar(@stack), 0, lista);
Parámetros:- La función splice() agrega la ‘lista’ al final de @stack.
- La ‘lista’ podría ser un escalar, una array o un hash.
Ejemplo:
#!/usr/bin/perl
# Intitialising the Stack
@stack
= (1..3);
# Original stack
print
"Original Stack: @stack"
;
# Scalar to be pushed
$scalar
=
"scalar"
;
# Array to be pushed
@array
= (
"a"
,
"r"
,
"r"
,
"a"
,
"y"
);
# Hash to be pushed
%hash
= (
"Geeks"
=> 10,
"for Geeks"
=> 20);
# scalars, arrays and hashes can be
# inserted at the same time
splice
(
@stack
,
scalar
(
@stack
), 0,
(
$scalar
,
@array
,
%hash
));
# Updated Stack after
# Push operations
print
(
"\nUpdated Stack: @stack"
);
Producción:Original Stack: 1 2 3 Updated Stack: 1 2 3 scalar a r r a y Geeks 10 for Geeks 20
El estallido se puede hacer usando la función pop() o la función splice().
- Haciendo estallar usando pop() :
Sintaxis: $elemento_reventado = pop(@stack);
Parámetros:- La función pop() devuelve el elemento reventado.
- $popped_element contiene el elemento extraído de la pila.
Ejemplo:
#!/usr/bin/perl
# Intitialising the Stack
@stack
= (1..3);
# Original stack
print
"Original Stack: @stack"
;
# Topmost element i.e. 3 is
# removed and returned
$popped_element
=
pop
(
@stack
);
# Printing popped element
print
"\nPopped element: $popped_element"
;
# Updated Stack after
# Pop operation
print
(
"\nUpdated Stack: @stack"
);
Producción:Original Stack: 1 2 3 Popped element: 3 Updated Stack: 1 2
- Si la pila está vacía, se devuelve undef . undef es análogo a NULL en Java y None en Python. Sin embargo, no se genera ningún error.
Ejemplo:
#!/usr/bin/perl
# Creating a Stack
@stack
;
# undef is returned since the
# stack is empty.
# No error is raised.
$popped_element
=
pop
(
@stack
);
# Printing popped element
# Since it contains no value,
# hence a blank space is returned
print
"Popped element: $popped_element"
;
Producción:Popped element:
- Haciendo estallar usando splice(): :
Sintaxis: $elemento_reventado=empalme(@stack, -1);
Parámetros:- La función splice() elimina el último elemento de la pila y lo devuelve.
- $popped_element almacena el valor devuelto.
Ejemplo:
#!/usr/bin/perl
# Intitialising the Stack
@stack
= (1..3);
# Original stack
print
"Original Stack: @stack"
;
# popping using splice()
$popped_element
=
splice
(
@stack
, -1);
# Printing popped element
print
"\nPopped element: $popped_element"
;
# Updated Stack after
# Pop operation
print
(
"\nUpdated Stack: @stack"
);
Producción:Original Stack: 1 2 3 Popped element: 3 Updated Stack: 1 2
- Se genera un error si la pila está vacía. El siguiente código genera un error:
use
warnings;
#!/usr/bin/perl
use
warnings;
# Creating a Stack
@stack
;
# popping using splice()
# An error is raised here
$popped_element
=
splice
(
@stack
, -1);
# Printing popped element
print
"\nPopped element: $popped_element"
;
# Updated Stack after
# Pop operation
print
(
"\nStack: @stack"
);
Error de tiempo de ejecución:
Uso inútil de una variable en contexto vacío en /home/59c7c19979aa9e46564cd145d5fe5601.pl línea 6. Intento de
modificación del valor de array no creable, subíndice -1 en /home/59c7c19979aa9e46564cd145d5fe5601.pl línea 10.
Publicación traducida automáticamente
Artículo escrito por KoushikMasavarapu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA