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