Related Articles

# Check if elements of Linked List are present in pair

• Difficulty Level : Easy
• Last Updated : 29 Jun, 2021

Given a singly linked list of integers. The task is to check if each element in the linked list is present in a pair i.e. all elements occur even no. of times.
Examples:

```Input: 1 -> 2 -> 3 -> 3 -> 1 -> 2
Output: Yes

Input: 10 -> 20 -> 30 -> 20
Output: No```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Approach:

• Initialize a temp node pointing to head.
• Take a variable to calculate XOR of all elements.
• Start traversing linked list and keep calculating the XOR with node->data.
• Return true if XOR is 0, else return false.

Below is the implementation of above approach:

## C++

 `// C++ program to check if elements of``// linked lists are present in pair``#include ` `using` `namespace` `std;` `// A linked list node``struct` `Node {``    ``int` `data;``    ``struct` `Node* next;``};` `// Function to check if elements of``// linked list are present in pair``bool` `isPair(``struct` `Node* head)``{` `    ``int` `xxor = 0;` `    ``struct` `Node* temp = head;` `    ``while` `(temp != NULL) {``        ``xxor ^= temp->data;``        ``temp = temp->next;``    ``}` `    ``return` `xxor;``}` `// Function to add a node at the``// beginning of Linked List``void` `push(``struct` `Node** head_ref, ``int` `new_data)``{``    ``/* allocate node */``    ``struct` `Node* new_node = (``struct` `Node*)``malloc``(``sizeof``(``struct` `Node));` `    ``/* put in the data */``    ``new_node->data = new_data;` `    ``/* link the old list off the new node */``    ``new_node->next = (*head_ref);` `    ``/* move the head to point to the new node */``    ``(*head_ref) = new_node;``}` `// Driver program to test above function``int` `main()``{``    ``struct` `Node* first = NULL;` `    ``/* First constructed linked list is:``    ``10 -> 34 -> 1 -> 10 -> 34 -> 1 */``    ``push(&first, 1);``    ``push(&first, 34);``    ``push(&first, 10);``    ``push(&first, 1);``    ``push(&first, 34);``    ``push(&first, 10);` `    ``// Calling function to check pair elements``    ``if` `(!isPair(first)) {``        ``cout << ``"Yes"` `<< endl;``    ``}``    ``else` `{``        ``cout << ``"No"` `<< endl;``    ``}` `    ``return` `0;``}`

## Java

 `// Java program to check if elements of``// linked lists are present in pair` `// Node Class``class` `Node``{``    ``int` `data;``    ``Node next;` `    ``// Constructor to create a new node``    ``Node(``int` `d)``    ``{``        ``data = d;``        ``next = ``null``;``    ``}``}` `class` `SLL``{` `    ``// function to insert a node at the beginning``    ``// of the Singly Linked List``    ``static` `Node push(Node head, ``int` `data)``    ``{``        ``Node newNode = ``new` `Node(data);``        ``newNode.next = head;``        ``head = newNode;``        ``return` `head;``    ``}` `    ``// Function to check if elements of``    ``// linked list are present in pair``    ``static` `boolean` `isPair(Node head)``    ``{``        ``int` `xxor = ``0``;``        ``Node temp = head;``        ``while` `(temp != ``null``)``        ``{``            ``xxor ^= temp.data;``            ``temp = temp.next;``        ``}``        ``return` `xxor != ``0``;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``Node head = ``null``;` `        ``// First constructed linked list``        ``// 10 -> 34 -> 1 -> 10 -> 34 -> 1` `        ``head = push(head, ``1``);``        ``head = push(head, ``34``);``        ``head = push(head, ``10``);``        ``head = push(head, ``1``);``        ``head = push(head, ``34``);``        ``head = push(head, ``10``);` `        ``// Calling function to check pair elements``        ``if` `(!isPair(head))``        ``{``            ``System.out.println(``"Yes"``);``        ``}``        ``else``        ``{``            ``System.out.println(``"No"``);``        ``}``    ``}``}` `// This code is contributed by Vivekkumar Singh`

## Python3

 `# Python3 program to check if elements of``# linked lists are present in pair` `# A linked list node``class` `Node:``    ``def` `__init__(``self``):``        ``self``.data ``=` `0``        ``self``.``next` `=` `None` `# Function to check if elements of``# linked list are present in pair``def` `isPair( head):``    ``xxor ``=` `0``    ``temp ``=` `head` `    ``while` `(temp !``=` `None``) :``        ``xxor ``=` `xxor ^ temp.data``        ``temp ``=` `temp.``next` `    ``return` `xxor` `# Function to add a node at the``# beginning of Linked List``def` `push( head_ref, new_data):` `    ``# allocate node``    ``new_node ``=` `Node()` `    ``# put in the data``    ``new_node.data ``=` `new_data` `    ``# link the old list off the new node``    ``new_node.``next` `=` `(head_ref)` `    ``# move the head to point to the new node``    ``(head_ref) ``=` `new_node``    ` `    ``return` `head_ref` `# Driver code` `first ``=` `None` `# First constructed linked list is:``# 10 . 34 . 1 . 10 . 34 . 1``first ``=` `push(first, ``1``)``first ``=` `push(first, ``34``)``first ``=` `push(first, ``10``)``first ``=` `push(first, ``1``)``first ``=` `push(first, ``34``)``first ``=` `push(first, ``10``)` `# Calling function to check pair elements``if` `(``not` `isPair(first)):``    ``print``( ``"Yes"` `)``    ` `else` `:``    ``print``( ``"No"` `)``    ` `# This code is contributed by Arnab Kundu`

## C#

 `// C# program to check if elements of``// linked lists are present in pair``using` `System;` `// Node Class``public` `class` `Node``{``    ``public` `int` `data;``    ``public` `Node next;` `    ``// Constructor to create a new node``    ``public` `Node(``int` `d)``    ``{``        ``data = d;``        ``next = ``null``;``    ``}``}` `public` `class` `SLL``{` `    ``// function to insert a node at the beginning``    ``// of the Singly Linked List``    ``static` `Node push(Node head, ``int` `data)``    ``{``        ``Node newNode = ``new` `Node(data);``        ``newNode.next = head;``        ``head = newNode;``        ``return` `head;``    ``}` `    ``// Function to check if elements of``    ``// linked list are present in pair``    ``static` `Boolean isPair(Node head)``    ``{``        ``int` `xxor = 0;``        ``Node temp = head;``        ``while` `(temp != ``null``)``        ``{``            ``xxor ^= temp.data;``            ``temp = temp.next;``        ``}``        ``return` `xxor != 0;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``Node head = ``null``;` `        ``// First constructed linked list``        ``// 10 -> 34 -> 1 -> 10 -> 34 -> 1` `        ``head = push(head, 1);``        ``head = push(head, 34);``        ``head = push(head, 10);``        ``head = push(head, 1);``        ``head = push(head, 34);``        ``head = push(head, 10);` `        ``// Calling function to check pair elements``        ``if` `(!isPair(head))``        ``{``            ``Console.WriteLine(``"Yes"``);``        ``}``        ``else``        ``{``            ``Console.WriteLine(``"No"``);``        ``}``    ``}``}` `// This code is contributed by Rajput-Ji`

## Javascript

 ``
Output:
`Yes`

My Personal Notes arrow_drop_up