Find the largest node in doubly linked list using C program

In this tutorial, we will learn how to find the largest node in Doubly linked list using C program? By Piyas Mukherjee Last updated : August 02, 2023

Input

A doubly linked list whose address of the first node is stored in a pointer say head

Output

The largest no of the linked list say max.

Data Structure Used

A doubly linked list where each node contains a data part, say data and two link parts say prev (to store the address of immediate previous node) and say next (to store the address of immediate next node).

Pseudo Code

Begin
temp=head
max=temp->data //max to store maximum
while(temp!=NULL)
begin
	if(temp->data>max)
		max=temp->data
		temp=temp->next
	end if
end while
End

C program to find the largest node in doubly linked list

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

typedef struct list {
    int data;
    struct list* next;
    struct list* prev;
} node;

void display(node* temp)
{
    printf("The list is as follows :\n");
    while (temp != NULL) {
        printf("%d->", temp->data);
        temp = temp->next;
    }
    printf("NULL");
    return;
}

// Main Code
int main()
{
    node *head = NULL, *temp, *temp1;
    int choice, max;

    //Taking the linked list as input
    do {
        temp = (node*)malloc(sizeof(node));
        if (temp != NULL) {
            printf("\nEnter the element in the list : ");
            scanf("%d", &temp->data);
            temp->next = NULL;
            if (head == NULL) {
                temp->prev = head;
                temp->next = head;
                head = temp;
            }
            else {
                temp1 = head;
                while (temp1->next != NULL) {
                    temp1 = temp1->next;
                }
                temp1->next = temp;
                temp->prev = temp1;
            }
        }
        else {
            printf("\nMemory not avilable...node allocation is not possible");
        }
        printf("\nIf you wish to add more data on the list enter 1 : ");
        scanf("%d", &choice);
    } while (choice == 1);

    display(head);

    //finding max
    temp = head;
    max = temp->data;
    while (temp != NULL) {
        if (temp->data > max)
            max = temp->data;
        temp = temp->next;
    }
    printf("\nThe largest element in the list is : %d", max);

    return 0;
}

Output

Enter the element in the list : 1

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 2

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : -3

If you wish to add more data on the list enter 1 : 1

Enter the element in the list : 56

If you wish to add more data on the list enter 1 : 0
The list is as follows :
1->2->-3->56->NULL
The largest element in the list is : 56


Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.