p5.js | Operación pop en la pila

La pila es una estructura de datos lineal que sigue un orden particular en el que se realizan las operaciones. El orden puede ser LIFO (Last In First Out) o FILO (First In Last Out).
pila

Pop Operation on Stacks: Acceder al contenido mientras se elimina de la parte superior de la pila se conoce como Pop Operation. En una implementación de array de la operación pop(), el elemento de datos en realidad no se elimina, sino que la parte superior se reduce a una posición más baja en la pila para apuntar al siguiente valor. Pero en la implementación de listas enlazadas, pop() en realidad elimina el elemento de datos y desasigna espacio de memoria.

Enfoque: una operación pop() puede implicar los siguientes pasos:

  • Compruebe si la pila está vacía o no.
  • Si la pila está vacía, produce un error y sale.
  • Si la pila no está vacía, accede al elemento de datos al que apunta la parte superior.
  • Elimine el elemento, usando la operación array.pop() en el búfer.
  • Éxito de retorno.

Ejemplo 1: este ejemplo describe solo la operación de inserción en la pila.

<!DOCTYPE html>
<html>
  
<head>
    <title>Stack Data Structure</title>
      
    <meta charset="UTF-8">
  
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.min.js" 
    type="text/javascript"></script>
  
    <style>
        body {
            padding: 0;
            margin: 0;
        } 
        canvas {
            vertical-align: top;
        } 
    </style>
</head>
  
<body>
    <script>
      
        // Define Stack function 
        function Stack(array) {
            this.array = [];
            if (array) this.array = array;
        }
          
        // Add Get Buffer property to object
        // constructor which slices the array
        Stack.prototype.getBuffer = function() {
            return this.array.slice();
        }
          
        // Add isEmpty properties to object
        // constructor which returns the
        // length of the array
        Stack.prototype.isEmpty = function() {
            return this.array.length == 0;
        }
          
        // Instance of the stack class
        var stack1 = new Stack(); //Stack { array: [] }
          
        // Add Push property to object constructor
        // which push elements to the array
        Stack.prototype.push = function(value) {
            this.array.push(value);
        }
          
        function setup() {
          
            // Create Canvas of size display width * 300
            createCanvas(displayWidth, 300);
        }
          
        function draw() {
              
            // Set background color
            background("grey");
              
            // Set stroke weight
            strokeWeight(3);
              
            // Set stroke color
            stroke('black');
            line(10, 45, 90, 45);
            rect(10, 30, 40, 30);
            noStroke();
            text("TOP", 20, 50);
              
            // Display stack 
            for(var i = stack1['array'].length-1; i >= 0; i--) {
                var p = 10;
                translate(70, 0);
                strokeWeight(3);
                stroke('black');
                line(10+p, 45, p+80, 45);
                noStroke();
                rect(10+p, 30, 40+p, 30);
                text(stack1['array'][i], 40, 50);
                p += 10;
            }
              
            textSize(16);
            text("Current Top : " + stack1.peek(), 0, 130); 
            textSize(13);
        }
          
        // Peek Function
        Stack.prototype.peek = function() {
            return this.array[this.array.length-1];
        }
          
        // Call to push operation
        stack1.push(1);
        stack1.push(2);
        stack1.push(3);
        stack1.push(19);
        stack1.push(11);
        stack1.push(12);
    </script>
</body>
  
</html>                         

Producción:

Ejemplo 2: este ejemplo utiliza dos operaciones Pop después de insertar el elemento en la pila llamando a la función stack1.pop() .

<!DOCTYPE html>
<html>
  
<head>
    <title>Stack Data Structure</title>
      
    <meta charset="UTF-8">
  
    <script src=
"https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.min.js" 
    type="text/javascript"></script>
  
    <style>
        body {
            padding: 0;
            margin: 0;
        } 
        canvas {
            vertical-align: top;
        } 
    </style>
</head>
  
<body>
    <script>
      
        // Define Stack function 
        function Stack(array) {
            this.array = [];
            if (array) this.array = array;
        }
          
        // Add Get Buffer property to object
        // constructor which slices the array
        Stack.prototype.getBuffer = function() {
            return this.array.slice();
        }
          
        // Add isEmpty properties to object
        // constructor which returns the
        // length of the array
        Stack.prototype.isEmpty = function() {
            return this.array.length == 0;
        }
          
        // Instance of the stack class
        var stack1 = new Stack(); //Stack { array: [] }
          
        // Add Push property to object constructor
        // which push elements to the array
        Stack.prototype.push = function(value) {
            this.array.push(value);
        }
          
        function setup() {
          
            // Create Canvas of size display width * 300
            createCanvas(displayWidth, 300);
        }
          
        function draw() {
              
            // Set background color
            background("grey");
              
            // Set stroke weight
            strokeWeight(3);
              
            // Set stroke color
            stroke('black');
            line(10, 45, 90, 45);
            rect(10, 30, 40, 30);
            noStroke();
            text("TOP", 20, 50);
              
            // Display stack 
            for(var i = stack1['array'].length-1; i >= 0; i--) {
                var p = 10;
                translate(70, 0);
                strokeWeight(3);
                stroke('black');
                line(10+p, 45, p+80, 45);
                noStroke();
                rect(10+p, 30, 40+p, 30);
                text(stack1['array'][i], 40, 50);
                p += 10;
            }
              
            textSize(16);
            text("Current Top : " + stack1.peek(), 0, 130); 
            textSize(13);
        }
          
        // Peek Function
        Stack.prototype.peek = function() {
            return this.array[this.array.length-1];
        }
          
        // Pop operation
        Stack.prototype.pop = function() {
            return this.array.pop();
        }
          
        // Call to push operation
        stack1.push(1);
        stack1.push(2);
        stack1.push(3);
        stack1.push(19);
        stack1.push(11);
        stack1.push(12);
          
        // Call to pop operation
        stack1.pop();
        stack1.pop();
    </script>
</body>
  
</html>                        

Producción:

Publicación traducida automáticamente

Artículo escrito por sarthak_ishu11 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 *