Rename articles prefixed with js-
This commit is contained in:
74
snippets/js/s/data-structures-stack.md
Normal file
74
snippets/js/s/data-structures-stack.md
Normal file
@ -0,0 +1,74 @@
|
||||
---
|
||||
title: JavaScript Data Structures - Stack
|
||||
shortTitle: Stack
|
||||
type: story
|
||||
language: javascript
|
||||
tags: [class]
|
||||
author: chalarangelo
|
||||
cover: purple-flower-macro-1
|
||||
excerpt: A stack is a linear data structure which follows a last in, first out (LIFO) order of operations.
|
||||
dateModified: 2021-08-03T05:00:00-04:00
|
||||
---
|
||||
|
||||
### Definition
|
||||
|
||||
A stack is a linear data structure that behaves like a real-world stack of items. It follows a last in, first out (LIFO) order of operations, similar to its real-world counterpart. This means that new items are added to the top of the stack and items are removed from the top of the stack as well.
|
||||
|
||||

|
||||
|
||||
The main operations of a stack data structure are:
|
||||
|
||||
- `push`: Adds an element to the top of the stack
|
||||
- `pop`: Removes an element from the top of the stack
|
||||
- `peek`: Retrieves the element at the top of the stack, without removing it
|
||||
- `isEmpty`: Checks if the stack is empty
|
||||
|
||||
### Implementation
|
||||
|
||||
```js
|
||||
class Stack {
|
||||
constructor() {
|
||||
this.items = [];
|
||||
}
|
||||
|
||||
push(item) {
|
||||
this.items.unshift(item);
|
||||
}
|
||||
|
||||
pop(item) {
|
||||
return this.items.shift();
|
||||
}
|
||||
|
||||
peek(item) {
|
||||
return this.items[0];
|
||||
}
|
||||
|
||||
isEmpty() {
|
||||
return this.items.length === 0;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- Create a `class` with a `constructor` that initializes an empty array, `items`, for each instance.
|
||||
- Define a `push()` method, which uses `Array.prototype.unshift()` to add an element to the start of the `items` array.
|
||||
- Define a `pop()` method, which uses `Array.prototype.shift()` to remove an element from the start of the `items` array.
|
||||
- Define a `peek()` method, which retrieves the value of the first element in the `items` array, without removing it.
|
||||
- Define an `isEmpty()` method, which uses `Array.prototype.length` to determine if the `items` array is empty.
|
||||
|
||||
```js
|
||||
const stack = new Stack();
|
||||
|
||||
stack.push('apples');
|
||||
stack.push('oranges');
|
||||
stack.push('pears');
|
||||
|
||||
stack.isEmpty(); // false
|
||||
|
||||
stack.peek(); // 'pears'
|
||||
|
||||
stack.pop(); // 'pears'
|
||||
stack.pop(); // 'oranges'
|
||||
stack.pop(); // 'apples'
|
||||
|
||||
stack.isEmpty(); // true
|
||||
```
|
||||
Reference in New Issue
Block a user