Find the largest node in Doubly linked list Last Updated : 18 Jan, 2023 Comments Improve Suggest changes Like Article Like Report Given a doubly-linked list, find the largest node in the doubly linked list. Examples: Input: 10->8->4->23->67->88 Largest node is: 88 Output: 88 Input : 34->2->78->18->120->39->7 Largest node is: 120 Output :120 Approach Used: Initialize the temp and max pointer to head nodes. Traverse the whole list. if temp's data is greater than max's data, then put max = temp. move on to the next node. Implementation: C++ /* C++ Program to find the largest nodes in doubly linked list */ #include <iostream> using namespace std; // Create a node of the doubly linked list struct Node { int data; struct Node* next; struct Node* prev; }; /* UTILITY FUNCTIONS */ /* Function to insert a node at the beginning of the Doubly 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; /* since we are adding at the beginning, prev is always NULL */ new_node->prev = NULL; /* link the old list of the new node */ new_node->next = (*head_ref); /* change prev of head node to new node */ if ((*head_ref) != NULL) (*head_ref)->prev = new_node; /* move the head to point to the new node */ (*head_ref) = new_node; } /* Function to find the largest nodes in Doubly Linked List */ int LargestInDLL(struct Node** head_ref) { struct Node *max, *temp; /* initialize two pointer temp and max on the head node */ temp = max = *head_ref; // traverse the whole doubly linked list while (temp != NULL) { /* if temp's data is greater than max's data, then put max = temp and return max->data */ if (temp->data > max->data) max = temp; temp = temp->next; } return max->data; } // Driver code int main() { // Start with the empty list struct Node* head = NULL; // Let us create a linked list push(&head, 20); push(&head, 14); push(&head, 181); push(&head, 100); cout << LargestInDLL(&head); return 0; } // This code is contributed by shubhamsingh10 C /* Program to find the largest nodes in doubly linked list */ #include <stdio.h> #include <stdlib.h> // Create a node of the doubly linked list struct Node { int data; struct Node* next; struct Node* prev; }; /* UTILITY FUNCTIONS */ /* Function to insert a node at the beginning of the Doubly 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; /* since we are adding at the beginning, prev is always NULL */ new_node->prev = NULL; /* link the old list of the new node */ new_node->next = (*head_ref); /* change prev of head node to new node */ if ((*head_ref) != NULL) (*head_ref)->prev = new_node; /* move the head to point to the new node */ (*head_ref) = new_node; } /* Function to find the largest nodes in Doubly Linked List */ int LargestInDLL(struct Node** head_ref) { struct Node *max, *temp; /* initialize two pointer temp and max on the head node */ temp = max = *head_ref; // traverse the whole doubly linked list while (temp != NULL) { /* if temp's data is greater than max's data, then put max = temp and return max->data */ if (temp->data > max->data) max = temp; temp = temp->next; } return max->data; } int main() { // Start with the empty list struct Node* head = NULL; // Let us create a linked list push(&head, 20); push(&head, 14); push(&head, 181); push(&head, 100); printf("%d", LargestInDLL(&head)); return 0; } Java // Java Program to find the largest // nodes in doubly linked list class GFG { // Create node of the doubly linked list static class Node { int data; Node next; Node prev; }; // UTILITY FUNCTIONS // Function to insert a node at the // beginning of the Doubly Linked List static Node push(Node head_ref, int new_data) { // allocate node Node new_node = new Node(); // put in the data new_node.data = new_data; // since we are adding at the // beginning, prev is always null new_node.prev = null; // link the old list of the new node new_node.next = (head_ref); // change prev of head node to new node if ((head_ref) != null) (head_ref).prev = new_node; // move the head to point to the new node (head_ref) = new_node; return head_ref; } // Function to find the largest // nodes in Doubly Linked List static int LargestInDLL(Node head_ref) { Node max, temp; // initialize two pointer temp // and max on the head node temp = max = head_ref; // traverse the whole doubly linked list while (temp != null) { // if temp's data is greater than // max's data, then put max = temp // and return max.data if (temp.data > max.data) max = temp; temp = temp.next; } return max.data; } public static void main(String args[]) { // Start with the empty list Node head = null; // Let us create a linked list head = push(head, 20); head = push(head, 14); head = push(head, 181); head = push(head, 100); System.out.printf("%d", LargestInDLL(head)); } } // This code is contributed by Arnab Kundu Python3 # Python3 program to find largest # node in doubly linked list # Node of the doubly linked list class Node: def __init__(self, data): self.data = data self.prev = None self.next = None # Function to find pair whose product # equal to given value x def pairProduct(head, x): # Set two pointers, # first to the beginning of DLL # and second to the end of DLL. first = head second = head while (second.next != None): second = second.next # To track if we find a pair or not found = False # The loop terminates when either of two pointers # become None, or they cross each other (second.next # == first), or they become same (first == second) while (first != None and second != None and first != second and second.next != first) : # pair found if ((first.data * second.data) == x) : found = True print("(" , first.data, ", ", second.data, ")") # move first in forward direction first = first.next # move second in backward direction second = second.prev else : if ((first.data * second.data) < x): first = first.next else: second = second.prev # if pair is not present if (found == False): print( "No pair found") # A utility function to insert a new node at the # beginning of doubly linked list def push( head, data): temp = Node(0) temp.data = data temp.next = temp.prev = None if (head == None): (head) = temp else : temp.next = head (head).prev = temp (head) = temp return head """ Function to find the largest nodes in Doubly Linked List """ def LargestInDLL( head_ref): max = None temp = None """ initialize two pointer temp and max on the head node """ temp = max = head_ref # traverse the whole doubly linked list while (temp != None): """ if temp's data is greater than max's data, then put max = temp and return max.data """ if (temp.data > max.data): max = temp temp = temp.next return max.data # Driver Code if __name__ == "__main__": # Start with the empty list head = None # Let us create a linked list head = push(head, 20) head = push(head, 14) head = push(head, 181) head = push(head, 100) print( LargestInDLL(head)) # This code is contributed by Arnab Kundu C# // C# Program to find the largest // nodes in doubly linked list using System; class GFG { // Create node of the doubly linked list public class Node { public int data; public Node next; public Node prev; }; // UTILITY FUNCTIONS // Function to insert a node at the // beginning of the Doubly Linked List static Node push(Node head_ref, int new_data) { // allocate node Node new_node = new Node(); // put in the data new_node.data = new_data; // since we are adding at the // beginning, prev is always null new_node.prev = null; // link the old list of the new node new_node.next = (head_ref); // change prev of head node to new node if ((head_ref) != null) (head_ref).prev = new_node; // move the head to point to the new node (head_ref) = new_node; return head_ref; } // Function to find the largest // nodes in Doubly Linked List static int LargestInDLL(Node head_ref) { Node max, temp; // initialize two pointer temp // and max on the head node temp = max = head_ref; // traverse the whole doubly linked list while (temp != null) { // if temp's data is greater than // max's data, then put max = temp // and return max.data if (temp.data > max.data) max = temp; temp = temp.next; } return max.data; } // Driver code public static void Main(String[] args) { // Start with the empty list Node head = null; // Let us create a linked list head = push(head, 20); head = push(head, 14); head = push(head, 181); head = push(head, 100); Console.Write("{0}", LargestInDLL(head)); } } // This code contributed by Rajput-Ji JavaScript <script> // javascript Program to find the largest // nodes in doubly linked list // Create node of the doubly linked list class Node { constructor(val) { this.data = val; this.prev = null; this.next = null; } } // UTILITY FUNCTIONS // Function to insert a node at the // beginning of the Doubly Linked List function push(head_ref , new_data) { // allocate node var new_node = new Node(); // put in the data new_node.data = new_data; // since we are adding at the // beginning, prev is always null new_node.prev = null; // link the old list of the new node new_node.next = (head_ref); // change prev of head node to new node if ((head_ref) != null) (head_ref).prev = new_node; // move the head to point to the new node (head_ref) = new_node; return head_ref; } // Function to find the largest // nodes in Doubly Linked List function LargestInDLL(head_ref) { var max, temp; // initialize two pointer temp // and max on the head node temp = max = head_ref; // traverse the whole doubly linked list while (temp != null) { // if temp's data is greater than // max's data, then put max = temp // and return max.data if (temp.data > max.data) max = temp; temp = temp.next; } return max.data; } // Start with the empty list var head = null; // Let us create a linked list head = push(head, 20); head = push(head, 14); head = push(head, 181); head = push(head, 100); document.write(LargestInDLL(head)); // This code contributed by umadevi9616 </script> Output181 Time Complexity: O(n) Auxiliary Space : O(1) Comment More infoAdvertise with us Next Article Find the largest node in Doubly linked list S shrikanth13 Follow Improve Article Tags : Linked List DSA doubly linked list Practice Tags : Linked List Similar Reads Find the Second Largest Element in a Linked List Given a Linked list of integer data. The task is to write a program that efficiently finds the second largest element present in the Linked List. Examples: Input : List = 12 -> 35 -> 1 -> 10 -> 34 -> 1 Output : The second largest element is 34. Input : List = 10 -> 5 -> 10 Outpu 9 min read Find smallest and largest elements in singly linked list Given a singly linked list of n nodes, the task is to find the smallest and largest element in linked list.Examples: Input: 15 -> 14 -> 13 -> 22 -> 17Output: 13 22 Explanation: The minimum element in the linked list is 13, and the maximum element is 22. Input: 20 -> 25 -> 23 -> 7 min read Find the Largest Number Using Four Nodes in a Singly Linked List Given a singly linked list, the task is to find the largest number in the linked list using four nodes. Examples: Input: List: 2->5->3->4->6Output: 6543Explanation: Using the four nodes, we traverse the linked list and construct the largest number, which is 6543 Input: List: 1->7-> 12 min read Find extra node in the second Linked list Given two Linked list L1 and L2. The second list L2 contains all the nodes of L1 along with 1 extra node. The task is to find that extra node. Examples: Input: L1 = 17 -> 7 -> 6 -> 16 L2 = 17 -> 7 -> 6 -> 16 -> 15 Output: 15 Explanation: Element 15 is not present in the L1 listI 7 min read Find pairs with given sum in doubly linked list Given a sorted doubly linked list of positive distinct elements, the task is to find pairs in a doubly-linked list whose sum is equal to the given value x in sorted order. Examples:Input: Output: (1, 6), (2,5)Explanation: We can see that there are two pairs (1, 6) and (2, 5) with sum 7.Input: Output 14 min read Like