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