76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Create a Stack Class
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## Create a Stack Class
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Method:
							 | 
						||
| 
								 | 
							
								- Stack is an abstract data structure.
							 | 
						||
| 
								 | 
							
								- Stack follows LIFO/FILO principle.
							 | 
						||
| 
								 | 
							
								- In this challenge, we need to add `.push()`, `.pop()`, `.peek()`, `.isEmpty()` and `.clear()` methods to the class.
							 | 
						||
| 
								 | 
							
								- 
							 | 
						||
| 
								 | 
							
								  - `push()` method pushes value to the stack.
							 | 
						||
| 
								 | 
							
								  - `pop()` method pops the first value from the stack.
							 | 
						||
| 
								 | 
							
								  - `peek()` method returns the first value from the stack.
							 | 
						||
| 
								 | 
							
								  - `isEmpty()` method checks if ths stack is empty.
							 | 
						||
| 
								 | 
							
								  - `.clear()` method removes all the elements from the stack.
							 | 
						||
| 
								 | 
							
								-
							 | 
						||
| 
								 | 
							
								| DS    | Access | Search | Insert | Delete |
							 | 
						||
| 
								 | 
							
								| ----- | ------ | ------ | ------ | ------ |
							 | 
						||
| 
								 | 
							
								| Stack |   n    |    n   |   1    |    1   |
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Solution:
							 | 
						||
| 
								 | 
							
								#### Basic:
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								function Stack() { 
							 | 
						||
| 
								 | 
							
								    var collection = [];
							 | 
						||
| 
								 | 
							
								    this.print = function() {
							 | 
						||
| 
								 | 
							
								        console.log(collection);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    this.push = function(val){
							 | 
						||
| 
								 | 
							
								        return collection.push(val);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    this.pop = function(){
							 | 
						||
| 
								 | 
							
								        return collection.pop();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    this.peek = function(){
							 | 
						||
| 
								 | 
							
								        return collection[collection.length-1];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    this.isEmpty = function(){
							 | 
						||
| 
								 | 
							
								        return collection.length === 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    this.clear = function(){
							 | 
						||
| 
								 | 
							
								        collection.length = 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								#### Advanced - ES6 Class syntax:
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Stack {
							 | 
						||
| 
								 | 
							
								    constructor() {
							 | 
						||
| 
								 | 
							
								        this.collection = [];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    print(){
							 | 
						||
| 
								 | 
							
								        console.log(this.collection);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    push(val){
							 | 
						||
| 
								 | 
							
								        retiurn this.collection.push(val);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    pop(){
							 | 
						||
| 
								 | 
							
								        return this.collection.pop();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    peek(){
							 | 
						||
| 
								 | 
							
								        return this.collection[this.collection.length-1];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    isEmpty(){
							 | 
						||
| 
								 | 
							
								        return this.collection.length === 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    clear(){
							 | 
						||
| 
								 | 
							
								        return this.collection.length = 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								 ### Resources:
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								- [Wikipedia](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))
							 |