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