Question

In: Computer Science

You are given a reference to the head node of a linked list that stores integers....

You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an instance of MyList, and gets the head node of this list. Please fill out the part that says “TODO”, that computes the minimum element in the list. For fun, please solve this problem recursively. This means that no part of your solution may include iterative loops. The list will not contain any integer greater than 2000000.

ListSmallest.java:

public class ListSmallest {

   public static void main(String [] args) {
      
       // Creating an instance of MyList.
       MyList L = new MyList();

       // Get the head of the linked list.
       ListNode head = L.getHead();

       // Create an object of this program to avoid static context.
       ListSmallest l = new ListSmallest();

       // head is the head of my linked list L.
       // TODO: please write a function to print the minimum element in this list. Please store this in the variable m.
       int m = 0; // store the min in this variable.

       System.out.println("The smallest is " + m);
   }
}

ListNode.java:

public class ListNode
{
public int num;
public ListNode next;

public ListNode(int _num, ListNode _next)
{
num = _num;
next = _next;
}
}

MyList.java:

public class MyList
{
private ListNode head;

MyList()
{
System.out.println("Loading my list.");
for (int i = 0; i < 50000; ++i) {
this.head = new ListNode(200000 - i, this.head);
}
this.head = new ListNode(17, this.head);
for (int j = 50000; j < 100000; ++j)
{
this.head = new ListNode(200000 - j, this.head);
}
System.out.println("My list is successfully loaded. Please print the smallest element.");
}

public ListNode getHead()
{
return this.head;
}
}

Solutions

Expert Solution

Program

public class ListSmallest {

public static void main(String [] args) {
  
// Creating an instance of MyList.
MyList L = new MyList();

// Get the head of the linked list.
ListNode head = L.getHead();

// Create an object of this program to avoid static context.
ListSmallest l = new ListSmallest();

// head is the head of my linked list L.
   
int m = 0;
try {
        m = l.getMin(head, Integer.MAX_VALUE); // store the min in this variable.
}catch(StackOverflowError t) {
        System.out.println("Caught "+t);
}

System.out.println("The smallest is " + m);
}
//method to return minimum element in this list
public int getMin(ListNode head, int min)
{
        if(head==null)
            return min;
        if(head.num < min)
            min = head.num;
        head = head.next;
        return getMin(head, min);
}

}

//ListNode.java:

public class ListNode
{
   public int num;
   public ListNode next;

   public ListNode(int _num, ListNode _next)
   {
       num = _num;
       next = _next;
   }
}

//MyList.java:

public class MyList
{
private ListNode head;

   MyList()
   {
       System.out.println("Loading my list.");
       for (int i = 0; i < 50000; ++i) {
           this.head = new ListNode(200000 - i, this.head);
       }
       this.head = new ListNode(17, this.head);
       for (int j = 50000; j < 100000; ++j)
       {
           this.head = new ListNode(200000 - j, this.head);
       }
       System.out.println("My list is successfully loaded. Please print the smallest element.");
   }

   public ListNode getHead()
   {
       return this.head;
   }
}

Output:

Loading my list.
My list is successfully loaded. Please print the smallest element.
Caught java.lang.StackOverflowError
The smallest is 0

Since the linked list is too large hence the output gives StackOverflowError. If you reduce number of nodes then it produce following output.

Output:

Loading my list.
My list is successfully loaded. Please print the smallest element.
The smallest is 17

Solving your question and helping you to well understand it is my focus. So if you face any difficulties regarding this please let me know through the comments. I will try my best to assist you. However if you are satisfied with the answer please don't forget to give your feedback. Your feedback is very precious to us, so don't give negative feedback without showing proper reason.
Always avoid copying from existing answers to avoid plagiarism.
Thank you.


Related Solutions

You are given a reference to the head node of a linked list that stores integers....
You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an...
You are given a reference to the head node of a linked list that stores integers....
You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an...
You are given a reference to the head node of a linked list that stores integers....
You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an...
You are given a reference to the head node of a linked list that stores integers....
You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an...
You are given a reference to the head node of a linked list that stores integers....
You are given a reference to the head node of a linked list that stores integers. Please print the minimum element in this linked list. The class ListNode.java contains the description of a single node in the linked list. It has a num field to store the integer number and a reference next that points to the next element in the list. The file MyList.class is a pre-defined java code, that creates a linked list. The file ListSmallest.java creates an...
You're given the pointer to the head node of a ordered linked list, an integer to...
You're given the pointer to the head node of a ordered linked list, an integer to add to the list. Write a function that inserts a number in the the list preserving its order. If the head pointer contains a null pointer that indicates an empty list. Function insertNode has the following parameters: head: a SinglyLinkedListNode pointer to the head of the list data: an integer value to insert as data in your new node Function prototype: SinglyLinkedListNode* insertNode(SinglyLinkedListNode* head,...
Python 3 Function which takes the head Node of a linked list and sorts the list...
Python 3 Function which takes the head Node of a linked list and sorts the list into non-descending order. PARAM: head_node The head of the linked list RETURNS: The node at the head of the sorted linked list. ''' def sort(head_node): #Code goes here ''' Test code goes here '' ' if __name__ == '__main__':
C++ language or Python. Linked Lists You are given a linked list that contains N integers....
C++ language or Python. Linked Lists You are given a linked list that contains N integers. You are to perform the following reverse operation on the list: Select all the subparts of the list that contain only even integers. For example, if the list is {1,2,8,9,12,16}, then the selected subparts will be {2,8}, {12,16}. Reverse the selected subpart such as {8,2} and {16,12}. The list should now be {1,8,2,9,16,12}. Your node definition should consist of 2 elements: the integer value...
Given a linked list of integers, remove any nodes from the linked list that have values...
Given a linked list of integers, remove any nodes from the linked list that have values that have previously occurred in the linked list. Your function should return a reference to the head of the updated linked list. (In Python)
Working on a c++ data structures assignment.   Linked List add node. I have the head case...
Working on a c++ data structures assignment.   Linked List add node. I have the head case and the tail case working but the middle/general case I can not get to work for the life of me. I have included the header file and the data struct file below   #ifndef LINKEDLIST_H #define LINKEDLIST_H #include "data.h" #include <iostream>   //take this out using std::cout; class LinkedList{     public:         LinkedList();         ~LinkedList();         bool addNode(int, string);         bool deleteNode(int);         bool getNode(int, Data*);         void printList(bool = false);         int getCount();         void...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT