DEV Community

Dhanashree Rugi
Dhanashree Rugi

Posted on

3 1

Find Largest And Smallest Number in a Linked List.

For a given linked list, you are supposed to write two separate functions that finds the largest and the smallest number in a linked list and print both the numbers.

Example 1:
Input: 4 6 2 8 1
Output: Largest Number: 8
Output: Smallest Number: 1

Example 2:
Input: 4 5 9 8 2
Output: Largest Number: 9
Output: Smallest Number: 2

Steps to find Largest number:

  • Initialise an integer variable max to INT_MIN.

  • Using temporary pointer temp start traversing the linked list and compare each data element in the linked list with the variable max until the end of linked list.

  • If the current node’s data is greater than value of max, then store the value of the current node’s data into max.

  • Finally, print the value of variable max which contains the largest number of the linked list.

Steps to find Smallest number:

  • Initialise an integer variable min to INT_MAX.

  • Using temporary pointer temp start traversing the linked list and compare each data element in the linked list with the variable min until the end of linked list.

  • If the current node’s data is lesser than the value of min, then store the value of the current node’s data into min.

  • Finally, print the value of variable min which contains the smallest number of the linked list.

Note : We are using INT_MAX because all the data elements are lesser than this and INT_MIN because all the data elements are greater than this. Using these two macros our findings become very easy.

C program that finds the largest and the smallest number in the linked list.

#include <stdio.h>
#include <stdlib.h> 
#include <limits.h>

struct node
{
    int data;
    struct node * next;
};

void displayLL(struct node * head)
{
    struct node * temp;
    temp = head;
    temp=head;
    while(temp!=0)
    {
       printf("%d ",temp->data);
       temp = temp->next;
    }
}
void small(struct node *head)
{
   struct node *temp = head;
   int min;
   min = INT_MAX;

   while(temp != NULL)
   {
       if(min > temp->data)
       {
           min = temp->data;
       }
       temp = temp->next;
   }
   printf("\n--------------------------------\n");
   printf("Smallest number of linked list : %d", min);
}

void large(struct node *head)
{
   struct node *temp = head;
   int max;
   max = INT_MIN;

   while(temp != NULL)
   {
       if(max < temp->data)
       {
           max = temp->data;
       }
       temp = temp->next;
   }
   printf("\n--------------------------------\n");
   printf("Largest number of linked list : %d", max);
}

int main()
{
   struct node *head = 0, *newnode, *temp; 
   int n, choice, newdata;

// Create Linked List // 

   printf("Enter the number of nodes in the list : ");
   scanf("%d", &n);

   if(n == 0)
    {
      printf("--------------------------------\n");
      printf("Linked list cannot be empty");
      exit(0);
    }

   for(int i = 1; i<=n; i++)
   {
     newnode = (struct node *)malloc(sizeof(struct node));
     printf("Enter the data%d : ", i);
     scanf("%d", &newnode->data);
     newnode->next = 0;
     if(head == 0)
     {
        head = temp = newnode;
     } 
     else
       { 
        temp->next = newnode;
        temp = newnode;
       }
    }
   printf("--------------------------------\n");
   printf("Linked list : ");
   displayLL(head);
   small(head);
   large(head);
}
Enter fullscreen mode Exit fullscreen mode

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay