ArticleZip > How Do You Implement A Stack And A Queue In Javascript

How Do You Implement A Stack And A Queue In Javascript

Implementing a stack and a queue in JavaScript can be a great way to enhance your coding skills and understanding of data structures. Both stack and queue are fundamental data structures that play a crucial role in programming. In this article, we will guide you through the process of implementing a stack and a queue in JavaScript to help you grasp these concepts effectively.

Let's start with a stack. A stack is a Last In, First Out (LIFO) data structure, meaning the last element added is the first one to be removed. To implement a stack in JavaScript, you can use an array and take advantage of its methods like `push()` to add elements and `pop()` to remove elements. Here's a simple implementation of a stack:

Javascript

const stack = [];

// Push elements onto the stack
stack.push(1);
stack.push(2);
stack.push(3);

// Pop elements from the stack
const poppedElement = stack.pop();
console.log(poppedElement); // Output: 3

Now, let's move on to implementing a queue. A queue is a First In, First Out (FIFO) data structure, where the first element added is the first one to be removed. You can easily implement a queue using an array in JavaScript as well. Here's how you can do it:

Javascript

const queue = [];

// Enqueue elements into the queue
queue.push(1);
queue.push(2);
queue.push(3);

// Dequeue elements from the queue
const dequeuedElement = queue.shift();
console.log(dequeuedElement); // Output: 1

In the examples above, `push()` is used to add elements to the stack or queue, while `pop()` is used for the stack and `shift()` for the queue to remove elements.

To implement a more efficient queue, you can use a linked list. Linked list-based queue implementations offer better performance for operations like enqueue and dequeue, especially when dealing with a large number of elements.

Here is a basic implementation of a queue using a linked list:

Javascript

class Node {
    constructor(value) {
        this.value = value;
        this.next = null;
    }
}

class Queue {
    constructor() {
        this.head = null;
        this.tail = null;
    }

    enqueue(value) {
        const newNode = new Node(value);
        if (!this.head) {
            this.head = newNode;
            this.tail = this.head;
        } else {
            this.tail.next = newNode;
            this.tail = newNode;
        }
    }

    dequeue() {
        if (!this.head) return null;
        const value = this.head.value;
        this.head = this.head.next;
        return value;
    }
}

const linkedListQueue = new Queue();
linkedListQueue.enqueue(1);
linkedListQueue.enqueue(2);
linkedListQueue.enqueue(3);
console.log(linkedListQueue.dequeue()); // Output: 1

Implementing a stack and a queue in JavaScript is a great way to understand these fundamental data structures and enhance your problem-solving skills in coding. Feel free to experiment with different implementations and explore more advanced features to deepen your understanding of stacks and queues in JavaScript!

×