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).
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