struct node* MS(struct node* s, struct node*s1, struct node*s2){
if(s == NULL) return(NULL);
else if(s->next == NULL) return(s);
else{
b = middle(s);
q = b->next;
b->next = NULL;
s1 = MS(s);
s2 = MS(q);
s = merge(s1,s2);
return (s);
}}
No heapsort is not the most inefficient in linked list sorting because it will take O(nlogn)