Computer Science, asked by monibiju1816, 1 year ago

Write a program to count number of elements in linked list

Answers

Answered by soura99
1
The following program is in C++. If u want it in any other language. Please comment.

#include<stdio.h>

#include<stdlib.h>

  

/* Link list node */

struct Node

{

    int data;

    struct Node* next;

};

  

/* Given a reference (pointer to pointer) to the head

  of a list and an int, push a new node on the front

  of the 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;

}

  

/* Counts no. of nodes in linked list */

int getCount(struct Node* head)

{

    int count = 0;  // Initialize count

    struct Node* current = head;  // Initialize current

    while (current != NULL)

    {

        count++;

        current = current->next;

    }

    return count;

}

  

/* Drier program to test count function*/

int main()

{

    /* Start with the empty list */

    struct Node* head = NULL;

  

    /* Use push() to construct below list

     1->2->1->3->1  */

    push(&head, 1);

    push(&head, 3);

    push(&head, 1);

    push(&head, 2);

    push(&head, 1);

  

    /* Check the count function */

    printf("count of nodes is %d", getCount(head));

    return 0;

}

Java

Python


Output:count of nodes is 5


Recursive Solution

int getCount(head) 1) If head is NULL, return 0. 2) Else return 1 + getCount(head->next)

Following are C/C++, Java and Python implementations of above algorithm to find count of nodes.

C/C++

// Recursive C program to find length or count of nodes in a linked list

#include<stdio.h>

#include<stdlib.h>

  

/* Link list node */

struct Node

{

    int data;

    struct Node* next;

};

  

/* Given a reference (pointer to pointer) to the head

  of a list and an int, push a new node on the front

  of the 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;

}

  

/* Counts the no. of occurences of a node

   (search_for) in a linked list (head)*/

int getCount(struct Node* head)

{

    // Base case

    if (head == NULL)

        return 0;

  

    // count is 1 + count of remaining list

    return 1 + getCount(head->next);

}

  

/* Drier program to test count function*/

int main()

{

    /* Start with the empty list */

    struct Node* head = NULL;

  

    /* Use push() to construct below list

     1->2->1->3->1  */

    push(&head, 1);

    push(&head, 3);

    push(&head, 1);

    push(&head, 2);

    push(&head, 1);

  

    /* Check the count function */

    printf("count of nodes is %d", getCount(head));

    return 0;

}

Answered by guhabhavani
0

Answer:

The following program is in C++.

#include<stdio.h>

#include<stdlib.h>

 

/* Link list node */

struct Node

{

   int data;

   struct Node* next;

};

 

/* Given a reference (pointer to pointer) to the head

 of a list and an int, push a new node on the front

 of the 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;

}

 

/* Counts no. of nodes in linked list */

int getCount(struct Node* head)

{

   int count = 0;  // Initialize count

   struct Node* current = head;  // Initialize current

   while (current != NULL)

   {

       count++;

       current = current->next;

   }

   return count;

}

 

/* Drier program to test count function*/

int main()

{

   /* Start with the empty list */

   struct Node* head = NULL;

 

   /* Use push() to construct below list

    1->2->1->3->1  */

   push(&head, 1);

   push(&head, 3);

   push(&head, 1);

   push(&head, 2);

   push(&head, 1);

 

   /* Check the count function */

   printf("count of nodes is %d", getCount(head));

   return 0;

}

Java

Python

Output:count of nodes is 5

Recursive Solution

int getCount(head) 1) If head is NULL, return 0. 2) Else return 1 + getCount(head->next)

Following are C/C++, Java and Python implementations of above algorithm to find count of nodes.

C/C++

// Recursive C program to find length or count of nodes in a linked list

#include<stdio.h>

#include<stdlib.h>

 

/* Link list node */

struct Node

{

   int data;

   struct Node* next;

};

 

/* Given a reference (pointer to pointer) to the head

 of a list and an int, push a new node on the front

 of the 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;

}

 

/* Counts the no. of occurences of a node

  (search_for) in a linked list (head)*/

int getCount(struct Node* head)

{

   // Base case

   if (head == NULL)

       return 0;

 

   // count is 1 + count of remaining list

   return 1 + getCount(head->next);

}

 

/* Drier program to test count function*/

int main()

{

   /* Start with the empty list */

   struct Node* head = NULL;

 

   /* Use push() to construct below list

    1->2->1->3->1  */

   push(&head, 1);

   push(&head, 3);

   push(&head, 1);

   push(&head, 2);

   push(&head, 1);

 

   /* Check the count function */

   printf("count of nodes is %d", getCount(head));

   return 0;

}

Similar questions