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:

