Program to Search an Element In Singly Linked List

Description

To search element in singly linked list - 
Case 1: check if list is empty 
	Show message that list is empty.
Case 2: If list has elements 
	Traverse the list, and compare the elements of list with the value to search,
	if element found print the element or if element does not exist, show the
	message that element does not not exist in the list.

Note: Here head contains the address of first node

C/C++

/* C Program to Search Element In Singly Linked List */
//Save it as search_element_singly_linked_list.c

#include<stdio.h>
#include<malloc.h>
struct node *create(int);
void display(struct node *);

//Declaring node
struct node{
    int data;
    struct node *next;
};

int main(){
    int n, val;
    struct node *head;
    printf("Enter number of nodes : ");
    scanf("%d",&n);
    
    //Calling function to create node
    head=create(n);
    
    //Calling function to display list
    display(head);

    printf("\nEnter the value to search : ");
    scanf("%d",&val);
    
    //Function to search element in singly linked list
    search_element(head, val);

    return 0;
}

struct node *create(int n){
    int i;
    struct node *head=NULL;
    struct node *address,*newNode;

    for(i=0;i<n;i++){
        
        //Creating a new node
        newNode=(struct node*)malloc(sizeof(struct node*));
        
        //Assigning data to newly created node
        printf("Enter the value of %d node : ",i+1);
        scanf("%d",&newNode->data);
        newNode->next=NULL;
        
        /*If list is empty assign the address of newly created node to head*/
        if(head==NULL){
            head=newNode;
        }else{
            
            /* If list already have few elements then loop through
            list and add newly created node after given node*/
            address=head;
            while(address->next!=NULL){
                address=address->next;
            }
            address->next=newNode;
        }
    }
    return head;
}

void display(struct node *head){
    struct node *address;
    
    //If list is empty
    if(head==NULL){
        printf("The linked list is empty");
    }else{
        
        /*If list has elements then loop through the loop and
        print elements one by one in sequential manner*/
        address=head;
        while(address!=NULL){
            printf("The node value = %d and their address = %u\n",address->data,address);
            address=address->next;
        }
    }
}

//Function to search element in this list
void search_element(struct node *head, int val){
    int flag=0;
    struct node *address;
    address=head;
    
    //If list does not have any element
    if(head==NULL){
        printf("Value cannot find as list is empty");
        return;
    }else{
        
        //Traversing the list
        while(address!=NULL){
            
            //Checking the data is present or not
            if(address->data==val){
                printf("\nThe data %d found and it's address is : %u",val,address);
                flag=1;
                
                //Coming out of loop if element found
                //Printing only first occurance of element from list
                break;
            }
            address=address->next;
        }
    }
    
    //If element is not present in this list
    if(flag==0){
        printf("\n%d does not exist in this list!!",val);
    }
}
Input:
Enter number of nodes : 3
Enter the value of 1 node : 4
Enter the value of 2 node : 2
Enter the value of 3 node : 9
The node value = 4 and their address = 7343440
The node value = 2 and their address = 7343472
The node value = 9 and their address = 7343488

Enter the value to search : 2

Output:
The data 2 found and it's address is : 7343472

Java

/* Java Program to Search Element In Singly Linked List */
//Save it as SearchElementSinglyLinkedList.java

import java.io.*;
import java.util.Scanner;

public class SearchElementSinglyLinkedList {
    
    // Declaring node
    class Node {
        int data;
        Node next;

        public Node(int data) {
            this.data = data;
            
            // Assigning null value to the next field
            this.next = null;
        }
    }

    public static Node head = null;
    
    // Function to add node
    public void addNode(int data) {
        
        // Creating a new node
        Node newNode = new Node(data);
        
        /* If list is empty assign the address of newly created node to head */
        if (head == null) {
            head = newNode;
        } else {
            
            // If list already have few elements then loop through list and

            Node ptr = head;
            while (ptr.next != null) {
                ptr = ptr.next;
            }
            ptr.next = newNode;
        }
    }

    public void display() {
        Node ptr = head;
        
        // If list is empty
        if (ptr == null) {
            System.out.println("The list is empty");
            return;
        }
        System.out.println("The nodes of lists are : ");
        
        /*
         * If list has elements then loop through the loop and print elements one by one
         * in sequential manner
         */
        while (ptr != null) {
            System.out.print(ptr.data + " ");
            ptr = ptr.next;
        }
    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        SearchElementSinglyLinkedList list = new SearchElementSinglyLinkedList();

        System.out.println("Enter number of node you want to enter : ");
        int n = scanner.nextInt();

        for (int i = 0; i < n; i++) {
            System.out.println("Enter value of " + (i + 1) + " node : ");
            int val = scanner.nextInt();
            list.addNode(val);
        }
        
        // Calling function to display list
        list.display();

        System.out.println("\nEnter the value to search : ");
        int val = scanner.nextInt();
        
        // Function to search element in singly linked list
        search_element(val);
    }

    private static void search_element(int val) {
        int flag=0;
        Node address;
        address=head;
        
        //If list does not have any element
        if(head==null){
            System.out.println("Value cannot find as list is empty");
            return;
        }else{
            
            //Traversing the list
            while(address!=null){
                
                //Checking the data is present or not
                if(address.data==val){
                    System.out.println("The data "+val+" found");
                    flag=1;
                    
                    //Coming out of loop if element found
                    //Printing only first occurrence of element from list
                    break;
                }
                address=address.next;
            }
        }
        
        //If element is not present in this list
        if(flag==0){
            System.out.println(val+" does not exist in this list!!");
        }
    }
}
Input:
Enter number of node you want to enter : 
5
Enter value of 1 node : 
6
Enter value of 2 node : 
1
Enter value of 3 node : 
4
Enter value of 4 node : 
8
Enter value of 5 node : 
3
The nodes of lists are : 
6 1 4 8 3 
Enter the value to search : 
8

Output:
The data 8 found

Related Programs

1) Program To Create And Display Singly Linked List
2) Program To Add A Node In Beginning Of Singly Linked List
3) Program To Add A Node In The End Of Singly Linked List
4) Program To Add A Node Before A Given Node Singly Linked List
5) Program To Add A Node After A Given Node Singly Linked List
6) Program To Delete Node From Beginning Singly Linked List
7) Program To Delete Node From End Singly Linked List
8) Program To Delete Given Node Singly Linked List
9) Program To Delete Node Before Given Node Singly Linked List
10) Program To Delete Node After Given Node Singly Linked List
11) Program To Delete All Nodes Of Singly Linked List
12) Program To Sort Elements Of Singly Linked List
13) Program To Reverse Elements Singly Linked List
14) Program to Find Maximum And Minimum Value Node In Singly Linked List
15) Program To Remove Duplicate Elements From Singly Linked List
16) Program To Create And Display Circular Singly Linked List
17) Program To Add A Node At The Beginning Of Circular Linked List
Share Me

Leave a Reply