DEV Community

Ivy-Walobwa
Ivy-Walobwa

Posted on

Stack: Linked List as storage

A stack is a collection in which data is added or removed in Last in First Out order (LIFO).

stack

A stack can easily be implemented using linked list. The top data element is the head where pushing and popping items happen at the head.

stack-linkedlist

Implementation

If you've read on Linked List , this would be simple to work on.
1.We'll create a node and a stack class

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

class Stack {
    constructor() {
        this.head = null;
        this.size = 0;
    }
//add methods here
}
Enter fullscreen mode Exit fullscreen mode

2.We'll add methods to our stack class to perform push, pop and peek operations

Push node to stack
Insert the element into linked list which will be the top node of Stack

    //add data to stack
    //adds on top of stack
    push(data) {
        this.head = new Node(data, this.head);
        this.size++;
    }
Enter fullscreen mode Exit fullscreen mode

pop node from stack
Return top element from the Stack and move the top pointer to the second node of Stack

//remove data on top of stack
    //returns removed data
    pop() {
        if (this.size === 0) {
            return;
        } else {
            //select top node
            let poppedNode = this.head;
            //make second data in stack top node
            this.head = this.head.next;
            //clear popped node's link
            poppedNode.next = null;
            this.size--;
            // console.log(poppedNode);
            return poppedNode.data;
        }
    }
Enter fullscreen mode Exit fullscreen mode

peek
Return the top element.

  //return head node data
    peek() {
        if (this.size === 0) {
            return;            
        } else {
            // console.log(this.head.data)
            return this.head.data; 
        }

    }
Enter fullscreen mode Exit fullscreen mode

Example test code

let stack = new Stack();
stack.push(70);
stack.push(80);
stack.push(90);
stack.pop();
stack.peek();
Enter fullscreen mode Exit fullscreen mode

In the next series, we'll implement a stack using arrays as the storage mechanism.
Happy Learning! ❤️

Discussion (0)