Such a technique where a variable, such as, head need to be sent to a method like mergeSort, but, the method is expected to return a new head is very common in languages like Java. This also means that if you recursively call mergeSort, you will need to employ the same technique for the heads of the sublists as they may change also.
The best approach to implementing this applet to create an intList object that would hold integer values and let the applet draw the lines. The idea is simple, you start with a default set of values, say 20 randomly chosen integers. Draw lines based on those values. Also, show those values at the bottom of the screen in a text area (I used the dump method from intList). When the user clicks on a Sort List button, your applet sorts the list and redraws the lines, also dumping the sorted list at the bottom. Each time user clicks on a New List button, a new set of values is generated that you again draw lines for and dump at the bottom. The Max Count is made to be changeable, but you can't allow too many lines,I think, I picked 80 as my max.
Checkout Tank Applet2 written by my independent study student David Fleming for some hints on user interfaces.