Count the number of occurrences of an element in a linked list in c++
In this tutorial, we will learn how to count the number of occurrences of an element in a linked list in c++.
For example

Example
If num=3.
Then the output will be it occurs 2 times.
If num=1
Then the output will be it occurs 1 time.
How to count the number of occurrences of an element in a linked list in c++?
Method 1:
We will use STL(Standard template library) here.
- Create a list using STL.
- Traverse the list by using an iterator.
- Compare each element with num to be found and increase the count.
- Print count.
Here, is the code:
#include <bits/stdc++.h>
using namespace std;
int main() {
list<int> mylist;
int n;
cin>>n;
int data;
for(int i=0;i<n;i++)
{
cin>>data;
mylist.push_back(data);
}
int num;
cin>>num;
int count=0;
for(list<int>::iterator head=mylist.begin();head!=mylist.end();head++)
{
if(*head==num)//comparing element
count++;
}
cout<<num<<" occurs "<<count<<" times ";
}
Input:
5 1 2 3 2 1 2
Output:
2 occurs 2 times
Method 2(By recursion):
We will create a linked list with the help of a class. The function createll(int n) creates the linked list by inserting elements at the end.
- int countrepetition(node *head,int num,int count)The count is initialized to 0.
- if(head->next==NULL)return count;This is our base case. It means that we have reached to the end of our linked list.
- Now compare the current head data to num and increase the count.
- count=countrepetition(head->next,num,count);Recursive call for next element and the head is changed to head->next.
Here, is the code:
#include<iostream>
using namespace std;
class node{
public:
int data;
node* next;
node(int d)
{
data=d;
next=NULL;
}
};
node *createll(int n){
int x;
node *head=NULL;
node *tail=NULL;
for(int i=0;i<n;i++)
{
cin>>x;
node *n=new node(x);
if(head==NULL)
{
head=n;
tail=n;
}
else
{
tail->next=n;
tail=tail->next;
}
}
return head;
}
void display(node *head)
{
node *temp=head;
while(temp!=NULL)
{
cout<<temp->data<<"-->";
temp=temp->next;
}
cout<<endl;
}
int countrepetition(node *head,int num,int count)
{
if(head->next==NULL)
return count;
if(head->data==num)
{
count++;
}
count=countrepetition(head->next,num,count);
return count;
}
int main()
{
int n;
cin>>n;
node *head=createll(n);
cout<<"Our linked list is:"<<endl;
display(head);
int num;
cin>>num;
int count=countrepetition(head,num,0);
cout<<num<<" occurs "<<count<<" times ";
}
Input:
5 1 2 3 2 1 3
Output:
Our linked list is: 1-->2-->3-->2-->1--> 3 occurs 1 time
Also, refer to:
Please post this same program in C method