p5.js | Pop Operation in Stack

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

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.

filter_none

edit
close

play_arrow

link
brightness_4
code

<!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>                         

chevron_right


Output:

Example 2: This example uses two Pop operations after pushing the element in the stack by calling stack1.pop() function.

filter_none

edit
close

play_arrow

link
brightness_4
code

<!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>                        

chevron_right


Output:



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.