Write a method minToFront
to be added to the LinkedIntList
class. Your method should move the smallest element value to the front of the linked list. Suppose a LinkedIntList
variable named list
stores these elements:
[7, 9, 12, 5, 3, 17]
If you made the call of list.minToFront();
, afterward the list would then store the elements in this order, because 3 is the minimum element value:
[3, 7, 9, 12, 5, 17]
If the list has more than one occurrence of the minimum value, the first occurrence is the only one that should be moved. For example, [7, 9, 3, 12, 5, 3, 17, 3]
becomes [3, 7, 9, 12, 5, 3, 17, 3]
. If the list is empty or has just one element, calling your method should have no effect.
Obey the following restrictions in your solution:
- Do not call any other methods on the
LinkedIntList
object, such as add
, remove
, or size
.
- Do not create new
ListNode
objects (though you may have as many ListNode
variables as you like).
- Do not use other data structures such as arrays, lists, queues, etc.
- Do not mutate the
data
field of any existing node; change the list only by modifying links between nodes.
- Your solution should run in O(N) time, where N is the number of elements of the linked list.
Assume that you are adding this method to the LinkedIntList class (that uses the ListNode class) below.
public class LinkedIntList { public class ListNode {
private ListNode front; public int data;
... public ListNode next;
} ...
}