- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Searching an Element in a Linked List using C++

To search an element in a linked list, we must iterate through the complete list, compare each node with the desired data, and keep searching until a match is obtained. Because a Linked List does not provide random access, we must start the search from the first node.

We are given a linked list of integers and an integer key. We need to find if this key exists in our linked list or not. We can do a simple linear search in the linked list and find the key. If present, we can return "Yes"; otherwise, "No"

**Let us look at some input-output scenarios −**

We have taken a list where we need to find whether the element is present in that list and get the output accordingly with the provided key as 3 −

Input Data: [ 10, 4, 5, 4, 10, 1, 3, 5] Output: Yes

Let’s consider another scenario with the key provided as 5 −

Input Data: [ 1, 4, 9, 4, 10, 1, 3, 6] Output: No

## Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task −

Set up the head as null.

Add few items to the Linked List

Get the user's input for the item to be searched for.

Linearly traverse the Linked List from head to end until you reach the null node.

Check each node to see if the data value matches the item to be searched.

Return the index of the node where the data was found. If not found, go to the next node.

## Example

For example, let's have a linked list such as "52->4651->42->5->12587->874->8->null" and its key is 12587. The C++ program to implement the example is given below −

#include <iostream> using namespace std; class Node { public: int val; Node* next; Node(int val) { this->val = val; next = NULL; } }; void solve(Node* head, int key) { while(head) { if(head->val == key) { cout << "Yes"; return; } head = head->next; } cout << "No"; } int main() { Node* head = new Node(52); head->next = new Node(4651); head->next->next = new Node(42); head->next->next->next = new Node(5); head->next->next->next->next = new Node(12587); head->next->next->next->next->next = new Node(874); head->next->next->next->next->next->next = new Node(8); solve(head, 12587); return 0; }

## Output

Yes

## Example

Now we will use the recursive approach to solve the same problem −

#include <iostream> using namespace std; class Node { public: int val; Node* next; Node(int val) { this->val = val; next = NULL; } }; void solve(Node* head, int key) { if(head == NULL) { cout << "No"; } else if(head->val == key) { cout << "Yes"; } else { solve(head->next, key); } } int main() { Node* head = new Node(52); head->next = new Node(4651); head->next->next = new Node(42); head->next->next->next = new Node(5); head->next->next->next->next = new Node(12587); head->next->next->next->next->next = new Node(874); head->next->next->next->next->next->next = new Node(8); solve(head, 12587); return 0; }

## Output

Yes

## Conclusion

The time complexity is O(n). We have used an iterative approach to solve this problem. Try this problem with a recursive approach.

- Related Questions & Answers
- Search an element in the given singly Linked List using C++
- Searching an element in Javascript Array
- Python program to search an element in a Circular Linked List
- Python program to search an element in a doubly linked list
- Python Program to Search for an Element in the Linked List without using Recursion
- Find a peak element in Linked List in C++
- Creating a linked list using Javascript
- Reverse a Linked List using C++
- Deletion of head and tail element logic in a linked list using C language.
- Replace an element from a Java List using ListIterator
- Creating a Doubly Linked List using Javascript
- Print Reverse a linked list using Stack
- Reverse a Doubly Linked List using C++
- Explain the deletion of element in linked list
- How to find middle element in a linked list in android?
- Find the Second Largest Element in a Linked List in C++