JavaScript Program for Searching an Element in a Linked List


A linked list is a linear data structure where each element, also known as a node, contains a data value and a reference to the next node in the list. One common operation on a linked list is searching for a specific element. This involves traversing the list and comparing each node's data value to the target element until a match is found.

Here is an example of a linked list that we will be working with throughout this article −

10 -> 20 -> 30 -> 40 -> null

In this linked list, each node contains a value, and the arrow indicates the next node in the sequence. The list starts with the head node, which contains the value 10 and ends with the tail node, which contains the value 40 and points to null. We will use this linked list to demonstrate how to search for an element in a linked list using JavaScript.

Let’s look at the below examples −

Linked list: 10 -> 20 -> 30 -> 40 -> null
Input: 40
Output: Element found at index 3
Input: 10
Output: Element found at index 0
Input: null
Output: Element not found

Now let’s discuss the algorithm for creating a linked list in JavaScript.

Algorithm

STEP 1 − Define a Node class with two properties: value and next. The value property represents the data stored in the node, and the next property is a reference to the next node in the linked list.

STEP 2 − Define a LinkedList class with three properties: head, tail, and length. The head property represents the first node in the linked list, the tail property represents the last node in the linked list, and the length property represents the number of nodes in the linked list.

STEP 3 − Define a method called- add to the LinkedList class that takes a value as an argument. The add method should create a new node with the given value and add it to the end of the linked list.

STEP 4 − Define a method called remove to the LinkedList class that takes a value as an argument. The remove method should remove the first node in the linked list with the given value.

STEP 5 − Define a method called search to the LinkedList class that takes a value as an argument. The search method should return the first node in the linked list with the given value, or null if no node is found.

STEP 6 − Define a method called a reverse to the LinkedList class that reverses the order of the nodes in the linked list.

Example: Implementation of the above algorithm using JavaScript

The below program defines a Node class and a LinkedList class. The Node class creates a new node with a given data value and a reference to the next node in the list. The LinkedList class creates a new linked list with a head node that initially points to null and a size property set to 0. The add method adds a new node to the end of the linked list. The search method traverses the linked list and returns the index of the element if it is found, or a message indicating that the element was not found. Finally, the program creates a new linked list, adds elements to it, and searches for a specific element.

// Define the Node class for a singly linked list
class Node {
   constructor(data) {
      this.data = data;
      this.next = null;
   }
}
// Define the LinkedList class
class LinkedList {
   constructor() {
      this.head = null;
      this.size = 0;
   }
   // Add an element to the linked list
   add(element) {
      const node = new Node(element);
      // If the linked list is empty, set the new node as the head
      if (this.head === null) {
         this.head = node;
      } else {
         // Traverse to the end of the linked list and add the new node
         let current = this.head;
         while (current.next !== null) {
            current = current.next;
         }
         current.next = node;
      }
      this.size++;
   }
   // Search for an element in the linked list
   search(element) {
      let current = this.head;
      let index = 0;
      // Traverse through the linked list until the element is found
      while (current !== null) {
         if (current.data === element) {
            return `Element found at index ${index}`;
         }
         current = current.next;
         index++;
      }
      return "Element not found";
   }
}
// Create a new linked list
const ll = new LinkedList();
// Add elements to the linked list
ll.add(10);
ll.add(20);
ll.add(30);
ll.add(40);
ll.add(50);
// Search for an element in the linked list
const result = ll.search(30);
console.log(result); 

Conclusion

The program for searching for an element in a linked list using JavaScript involves creating a 'LinkedList' class that defines methods for adding elements to the list and searching for elements in the list. The program uses a while loop to traverse through the linked list and compares the data element in each node with the element being searched for. If the element is found, the program returns the index of the node, and if the element is not found, the program returns "Element not found".

Updated on: 17-Apr-2023

244 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements