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;
}
}
ListNode.java
public class ListNode
{
public int num;
public ListNode next;
public ListNode(int _num, ListNode _next)
{
num = _num;
next = _next;
}
}
Screenshot
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;
}
}
Screenshot
ListSmallest.java
public class ListSmallest {
//method which returns the smallest vlaue form a linked list
public static int smallestVal(ListNode head){
int small=head.num;
//iterate List
while (head != null) {
if(head.num<small)
small=head.num;
head = head.next;
}
return small;
}
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 = smallestVal(head); // store the min in this variable.
System.out.println("The smallest is " + m);
}
}
Screenshot
Output
Get Answers For Free
Most questions answered within 1 hours.