What is Stack?
The stack is a linear data structure like an array in which only the last inserted element can be accessed. This data structure works over the principle of Last In First Out (LIFO). It is very fast since it has to access only the last added element so it requires constant time to do so having complexity O(1).
Stacks should be used over arrays when we need to work with data in the LIFO form. Push operation on the stack is used to add an item to the stack. If the stack is full, then it is said to be an Overflow condition.
The basic skeleton of the stack: Below example runs using the “$node skeleton.js” command to get the basic stack skeleton.
javascript
// 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 let stack1 = new Stack(); // Stack { array: [] } console.log(stack1); |
Example: This example describes the push operation on the stack.
javascript
<!DOCTYPE html> <html> <head> <title>Stack push operation</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> <title> <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 let 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 (let i = stack1[ 'array' ].length - 1; i >= 0; i--) { let 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; } } // 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:
After Pushing ’14’ by calling stack1.push(14) function to the top of the stack.