Check whether the length of given linked list is Even or Odd

Given a linked list, task is to make a function which check whether the length of linked list is even or odd.
Examples:

Input : 1->2->3->4->NULL
Output : Even

Input : 1->2->3->4->5->NULL
Output : Odd

Method 1: Count the codes linearly
Traverse the entire Linked List and keep counting the number of nodes. As soon as the loop is finished, we can check if the count is even or odd. You may try it yourself.

Method 2: Stepping 2 nodes at a time
Approach:

1. Take a pointer and move that pointer two nodes at a time
2. At the end, if the pointer is NULL then length is Even, else Odd.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to check length 
// of a given linklist 
#include <bits/stdc++.h>
using namespace std; 
  
// Defining structure 
class Node 
    public:
    int data; 
    Node* next; 
}; 
  
// Function to check the length of linklist 
int LinkedListLength(Node* head) 
    while (head && head->next) 
    
        head = head->next->next; 
    
    if (!head) 
        return 0; 
    return 1; 
      
// Push function 
void push(Node** head, int info) 
    // Allocating node 
    Node* node = new Node();
      
    // Info into node 
    node->data = info; 
      
    // Next of new node to head 
    node->next = (*head); 
  
    // head points to new node 
    (*head) = node; 
  
// Driver code 
int main(void
    Node* head = NULL; 
      
    // Adding elements to Linked List 
    push(&head, 4); 
    push(&head, 5); 
    push(&head, 7); 
    push(&head, 2); 
    push(&head, 9); 
    push(&head, 6); 
    push(&head, 1); 
    push(&head, 2); 
    push(&head, 0); 
    push(&head, 5); 
    push(&head, 5); 
    int check = LinkedListLength(head); 
      
    // Checking for length of 
    // linklist 
    if(check == 0) 
    
        cout << "Even\n"
    
    else
    
        cout << "Odd\n"
    
    return 0; 
  
// This is code is contributed by rathbhupendra

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to check length 
// of a given linklist
#include<stdio.h>
#include<stdlib.h>
  
// Defining structure
struct Node
{
    int data;
    struct Node* next;
};
  
// Function to check the length of linklist
int LinkedListLength(struct Node* head)
{
    while (head && head->next)
    {
        head = head->next->next;
    }
    if (!head)
        return 0;
    return 1;
}
      
// Push function
void push(struct Node** head, int info)
{
    // Allocating node
    struct Node* node = (struct Node*) malloc(sizeof(struct Node));
      
    // Info into node
    node->data = info;
      
    // Next of new node to head
    node->next = (*head);
  
    // head points to new node
    (*head) = node;
}
  
// Driver function
int main(void)
{
    struct Node* head = NULL;
      
    // Adding elements to Linked List
    push(&head, 4);
    push(&head, 5);
    push(&head, 7);
    push(&head, 2);
    push(&head, 9);
    push(&head, 6);
    push(&head, 1);
    push(&head, 2);
    push(&head, 0);
    push(&head, 5);
    push(&head, 5);
    int check = LinkedListLength(head);
      
    // Checking for length of
    // linklist
    if(check == 0)
    {
        printf("Even\n");
    }
    else
    {
        printf("Odd\n");
    }
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

/*package whatever //do not write package name here */
  
import java.io.*;
  
// Java program to check length 
// of a given linklist 
class GfG 
  
// Defining structure 
static class Node 
    int data; 
    Node next; 
}
  
// Function to check the length of linklist 
static int LinkedListLength(Node head) 
    while (head != null && head.next != null
    
        head = head.next.next; 
    
    if (head == null
        return 0
    return 1
      
// Push function 
static void push(Node head, int info) 
    // Allocating node 
    Node node = new Node(); 
      
    // Info into node 
    node.data = info; 
      
    // Next of new node to head 
    node.next = (head); 
  
    // head points to new node 
    (head) = node; 
  
// Driver code 
public static void main(String[] args) 
    Node head = null
      
    // Adding elements to Linked List 
    push(head, 4); 
    push(head, 5); 
    push(head, 7); 
    push(head, 2); 
    push(head, 9); 
    push(head, 6); 
    push(head, 1); 
    push(head, 2); 
    push(head, 0); 
    push(head, 5); 
    push(head, 5); 
    int check = LinkedListLength(head); 
      
    // Checking for length of 
    // linklist 
    if(check == 0
    
        System.out.println("Odd"); 
    
    else
    
        System.out.println("Even"); 
    
}
  
// This code is contributed by Prerna saini

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to check length 
# of a given linklist 
  
# Defining structure 
class Node: 
    def __init__(self, d):
        self.data = d
        self.next = None
        self.head = None
  
    # Function to check the length of linklist 
    def LinkedListLength(self):
        while (self.head != None and self.head.next != None): 
            self.head = self.head.next.next
              
        if(self.head == None):
            return 0
        return 1
      
    # Push function 
    def push(self, info):
          
    # Allocating node 
        node = Node(info) 
  
    # Next of new node to head 
        node.next = (self.head) 
  
    # head points to new node 
        (self.head) = node 
  
# Driver code 
  
head = Node(0
      
# Adding elements to Linked List 
head.push( 4
head.push( 5
head.push( 7
head.push( 2
head.push( 9
head.push( 6
head.push( 1
head.push( 2
head.push( 0
head.push( 5
head.push( 5
check = head.LinkedListLength()
      
# Checking for length of 
# linklist 
if(check == 0) :
    print("Even")
else:
    print("Odd")
  
# This code is contributed by Prerna saini

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to check length 
// of a given linklist 
using System;
  
class GfG 
  
// Defining structure 
class Node 
    public int data; 
    public Node next; 
  
// Function to check the length of linklist 
static int LinkedListLength(Node head) 
    while (head != null && head.next != null
    
        head = head.next.next; 
    
    if (head == null
        return 0; 
    return 1; 
      
// Push function 
static void push(Node head, int info) 
    // Allocating node 
    Node node = new Node(); 
      
    // Info into node 
    node.data = info; 
      
    // Next of new node to head 
    node.next = (head); 
  
    // head points to new node 
    (head) = node; 
  
// Driver code 
public static void Main() 
    Node head = null
      
    // Adding elements to Linked List 
    push(head, 4); 
    push(head, 5); 
    push(head, 7); 
    push(head, 2); 
    push(head, 9); 
    push(head, 6); 
    push(head, 1); 
    push(head, 2); 
    push(head, 0); 
    push(head, 5); 
    push(head, 5); 
    int check = LinkedListLength(head); 
      
    // Checking for length of 
    // linklist 
    if(check == 0) 
    
        Console.WriteLine("Odd"); 
    
    else
    
        Console.WriteLine("Even"); 
    
  
// This code has been contributed 
// by PrinciRaj1992 

chevron_right


Output:

Odd

Time Complexity: O(n)
Space Complexity: O(1)

This article is contributed by Sahil Rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up



Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.