The stack is a linear data structure which follows a particular order in which the operations are performed. The order may be LIFO(Last In First Out) or FILO(First In Last Out).
Pop Operation on Stacks: Accessing the content while removing it from the top of the stack, is known as a Pop Operation. In an array implementation of pop() operation, the data element is not actually removed, instead top is decremented to a lower position in the stack to point to the next value. But in linked-list implementation, pop() actually removes data element and deallocates memory space.
Approach: A pop() operation may involve the following steps:
- Check if the stack is empty or not.
- If the stack is empty, produces an error and exit.
- If the stack is not empty, accesses the data element at which top is pointing.
- Delete the element, using array.pop() operation on buffer.
- Return success.
Example 1: This example describes only push operation on stack.
<!DOCTYPE html> <html> <head> <title>Stack Data Structure</title> <meta charset= "UTF-8" > <script src= 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> |
Output:
Example 2: This example uses two Pop operations after pushing the element in the stack by calling stack1.pop() function.
<!DOCTYPE html> <html> <head> <title>Stack Data Structure</title> <meta charset= "UTF-8" > <script src= 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> |
Output: