perl | Implementando una pila

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.

haciendo 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);
Empujar elementos a una pila

 
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
    
Extraer elementos de una pila

 
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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *