C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Program to find the maximum and minimum value node from a singly linked listExplanationIn this program, we need to find out the minimum and maximum value node in the given singly linked list. ![]() We will maintain two variables min and max. Min will hold minimum value node, and max will hold maximum value node. In the above example, 1 will be minimum value node and 8 will be maximum value node. The algorithm to find the maximum and minimum node is given below. Algorithm
SolutionPython#Represent a node of the singly linked list class Node: def __init__(self,data): self.data = data; self.next = None; class MinMax: #Represent the head and tail of the singly linked list def __init__(self): self.head = None; self.tail = None; #addNode() will add a new node to the list def addNode(self, data): #Create a new node newNode = Node(data); #Checks if the list is empty if(self.head == None): #If list is empty, both head and tail will point to new node self.head = newNode; self.tail = newNode; else: #newNode will be added after tail such that tail's next will point to newNode self.tail.next = newNode; #newNode will become new tail of the list self.tail = newNode; #minNode() will find out the minimum value node in the list def minNode(self): current = self.head; if(self.head == None): print("List is empty"); else: #Initializing min with head node data min = self.head.data; while(current != None): #If current node's data is smaller than min #Then, replace value of min with current node's data if(min > current.data): min = current.data; current = current.next; print("Minimum value node in the list: " + str(min)); #maxNode() will find out the maximum value node in the List def maxNode(self): current = self.head; if(self.head == None): print("List is empty"); else: #Initializing max with head node data max = self.head.data; while(current != None): #If current node's data is greater than max #Then, replace value of max with current node's data if(max < current.data): max = current.data; current= current.next; print("Maximum value node in the list: " + str(max)); sList = MinMax(); #Adds data to the list sList.addNode(5); sList.addNode(8); sList.addNode(1); sList.addNode(6); #Display the minimum value node in the list sList.minNode(); #Display the maximum value node in the list sList.maxNode(); Output: Minimum value node in the list: 1 Maximum value node in the list: 8 C#include <stdio.h> //Represent a node of the singly linked list struct node{ int data; struct node *next; }; //Represent the head and tail of the singly linked list struct node *head, *tail = NULL; //addNode() will add a new node to the list void addNode(int data) { //Create a new node struct node *newNode = (struct node*)malloc(sizeof(struct node)); newNode->data = data; newNode->next = NULL; //Checks if the list is empty if(head == NULL) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //newNode will be added after tail such that tail's next will point to newNode tail->next = newNode; //newNode will become new tail of the list tail = newNode; } } //minNode() will find out the minimum value node in the list void minNode() { struct node *current = head; int min; if(head == NULL) { printf("List is empty \n"); } else { //Initializing min with head node data min = head->data; while(current != NULL){ //If current node's data is smaller than min //Then, replace value of min with current node's data if(min > current->data) { min = current->data; } current= current->next; } printf("Minimum value node in the list: %d\n", min); } } //maxNode() will find out the maximum value node in the list void maxNode() { struct node *current = head; int max; if(head == NULL) { printf("List is empty \n"); } else { //Initializing max with head node data max = head->data; while(current != NULL){ //If current node's data is greater than max //Then, replace value of max with current node's data if(max < current->data) { max = current->data; } current = current->next; } printf("Maximum value node in the list: %d\n", max); } } int main() { //Adds data to the list addNode(5); addNode(8); addNode(1); addNode(6); //Display the minimum value node in the list minNode(); //Display the maximum value node in the list maxNode(); return 0; } Output: Minimum value node in the list: 1 Maximum value node in the list: 8 JAVApublic class MinMax { //Represent a node of the singly linked list class Node{ int data; Node next; public Node(int data) { this.data = data; this.next = null; } } //Represent the head and tail of the singly linked list public Node head = null; public Node tail = null; //addNode() will add a new node to the list public void addNode(int data) { //Create a new node Node newNode = new Node(data); //Checks if the list is empty if(head == null) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //newNode will be added after tail such that tail's next will point to newNode tail.next = newNode; //newNode will become new tail of the list tail = newNode; } } //minNode() will find out the minimum value node in the list public void minNode() { Node current = head; int min; if(head == null) { System.out.println("List is empty"); } else { //Initializing min with head node data min = head.data; while(current != null){ //If current node's data is smaller than min //Then, replace value of min with current node's data if(min > current.data) { min = current.data; } current= current.next; } System.out.println("Minimum value node in the list: "+ min); } } //maxNode() will find out the maximum value node in the list public void maxNode() { Node current = head; int max; if(head == null) { System.out.println("List is empty"); } else { //Initializing max with head node data max = head.data; while(current != null){ //If current node's data is greater than max //Then, replace value of max with current node's data if(max < current.data) { max = current.data; } current = current.next; } System.out.println("Maximum value node in the list: "+ max); } } public static void main(String[] args) { MinMax sList = new MinMax(); //Adds data to the list sList.addNode(5); sList.addNode(8); sList.addNode(1); sList.addNode(6); //Display the minimum value node in the list sList.minNode(); //Display the maximum value node in the list sList.maxNode(); } } Output: Minimum value node in the list: 1 Maximum value node in the list: 8 C#using System; public class CreateList { //Represent a node of the singly linked list public class Node<T>{ public T data; public Node<T> next; public Node(T value) { data = value; next = null; } } public class MinMax<T> where T : IComparable<T>{ //Represent the head and tail of the singly linked list public Node<T> head = null; public Node<T> tail = null; //addNode() will add a new node to the list public void addNode(T data) { //Create a new node Node<T> newNode = new Node<T>(data); //Checks if the list is empty if(head == null) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //newNode will be added after tail such that tail's next will point to newNode tail.next = newNode; //newNode will become new tail of the list tail = newNode; } } //minNode() will find out the minimum value node in the list public void minNode() { Node<T> current = head; T min; if(head == null) { Console.WriteLine("List is empty"); } else { //Initializing min with head node data min = head.data; while(current != null){ //If current node's data is smaller than min //Then, replace value of min with current node's data if(min.CompareTo(current.data) > 0) { min = current.data; } current= current.next; } Console.WriteLine("Minimum value node in the list: "+ min); } } //maxNode() will find out the maximum value node in the list public void maxNode() { Node<T> current = head; T max; if(head == null) { Console.WriteLine("List is empty"); } else { //Initializing max with head node data max = head.data; while(current != null){ //If current node's data is greater than max //Then, replace value of max with current node's data if(max.CompareTo(current.data) < 0) { max = current.data; } current = current.next; } Console.WriteLine("Maximum value node in the list: "+ max); } } } public static void Main() { MinMax<int> sList = new MinMax<int>(); //Adds data to the list sList.addNode(5); sList.addNode(8); sList.addNode(1); sList.addNode(6); //Display the minimum value node in the list sList.minNode(); //Display the maximum value node in the list sList.maxNode(); } } Output: Minimum value node in the list: 1 Maximum value node in the list: 8 PHP<!DOCTYPE html> <html> <body> <?php //Represent a node of singly linked list class Node{ public $data; public $next; function __construct($data){ $this->data = $data; $this->next = NULL; } } class MinMax{ //Represent the head and tail of the singly linked list public $head; public $tail; function __construct(){ $this->head = NULL; $this->tail = NULL; } //addNode() will add a new node to the list function addNode($data) { //Create a new node $newNode = new Node($data); //Checks if the list is empty if($this->head == NULL) { //If list is empty, both head and tail will point to new node $this->head = $newNode; $this->tail = $newNode; } else { //newNode will be added after tail such that tail's next will point to newNode $this->tail->next = $newNode; //newNode will become new tail of the list $this->tail = $newNode; } } //minNode() will find out the minimum value node in the list function minNode() { $current = $this->head; if($this->head == null) { print("List is empty <br>"); } else { //Initializing min with head node data $min = $this->head->data; while($current != null){ //If current node's data is smaller than min //Then, replace value of min with current node's data if($min > $current->data) { $min = $current->data; } $current = $current->next; } print("Minimum value node in the list: ". $min); } } //maxNode() will find out the maximum value node in the list function maxNode() { $current = $this->head; if($this->head == null) { print("List is empty <br>"); } else { //Initializing max with head node data $max = $this->head->data; while($current != null){ //If current node's data is greater than max //Then, replace value of max with current node's data if($max < $current->data) { $max = $current->data; } $current = $current->next; } print("<br>Maximum value node in the list: ". $max); } } } $sList = new MinMax(); //Adds data to the list $sList->addNode(5); $sList->addNode(8); $sList->addNode(1); $sList->addNode(6); //Display the minimum value node in the list $sList->minNode(); //Display the maximum value node in the list $sList->maxNode(); ?> </body> </html> Output: Minimum value node in the list: 1 Maximum value node in the list: 8
Next Topic#
|