Oliver Wolfson
ServicesProjectsContact

Development Services

SaaS apps · AI systems · MVP builds · Technical consulting

Services·Blog
© 2025 Oliver Wolfson. All rights reserved.
webdevelopmentjavascript
Adding to Removing from Traversing and Reversing the Linked List
Adding to, removing from, traversing, and reversing a linked list in JavaScript.
April 2, 2023•O. Wolfson

Read my previous tutorial on linked lists here.

Now that we have a basic implementation of a linked list, let's expand its functionality with additional methods for adding to, removing from, traversing, and reversing the list.

Add a new method prepend to add a node to the beginning of the list:

function createLinkedList() {
// ... previous code ...

prepend: function (data) {
const newNode = createNode(data);
newNode.next = this.head;
this.head = newNode;
},

// ... remaining code ...
}

Add a method remove to delete a node with the specified data from the list:

function createLinkedList() {
// ... previous code ...

remove: function (data) {
if (!this.head) {
return;
}

    if (this.head.data === data) {
      this.head = this.head.next;
      return;
    }

    let currentNode = this.head;
    while (currentNode.next && currentNode.next.data !== data) {
      currentNode = currentNode.next;
    }

    if (currentNode.next) {
      currentNode.next = currentNode.next.next;
    }

},

// ... remaining code ...
}

Add a method find to search for a node with the specified data and return it:

function createLinkedList() {
// ... previous code ...

find: function (data) {
let currentNode = this.head;
while (currentNode && currentNode.data !== data) {
currentNode = currentNode.next;
}

    return currentNode;

},

// ... remaining code ...
}

Add a method reverse to reverse the order of the nodes in the list:

function createLinkedList() {
  // ... previous code ...

  // Add a reverse method to the linked list
  reverse: function () {
    // Initialize the previousNode variable as null
    let previousNode = null;
    // Set the currentNode variable to the head of the linked list
    let currentNode = this.head;

    // Iterate through the linked list until currentNode becomes null
    while (currentNode) {
      // Store the next node in the list in the variable nextNode
      const nextNode = currentNode.next;
      // Set the currentNode's next pointer to point to the previous node
      currentNode.next = previousNode;
      // Move the previousNode pointer to the current node
      previousNode = currentNode;
      // Move the currentNode pointer to the next node
      currentNode = nextNode;
    }

    // Update the head of the linked list to be the previousNode (the new head)
    this.head = previousNode;

  },

  // ... remaining code ...
}

Now, let's use the new methods with our linked list:

const myList = createLinkedList();
myList.append("Alice");
myList.append("Bob");
myList.prepend("Charlie");
myList.printList(); // Outputs: Charlie, Alice, Bob

myList.remove("Alice");
myList.printList(); // Outputs: Charlie, Bob

const foundNode = myList.find("Bob");
console.log(foundNode); // Outputs: { data: 'Bob', next: null }

myList.reverse();
myList.printList(); // Outputs: Bob, Charlie

In this follow-up tutorial, we added new methods to our linked list implementation. The prepend method adds a node to the beginning of the list, the remove method deletes a node with the specified data, the find method searches for a node with the specified data and returns it, and the reverse method reverses the order of the nodes in the list.

Check out the previous tutorial on linked lists here.

Tags
#linkedlist#javascript#data