In comments to this answer an idea is brought up that inverting a simply linked list could only be done in O(nlog(n)), not O(n) time.
This is definitely wrong – an O(n) inversion is not a problem - just traverse the list and change pointers as you go. Three temporary pointers are required - that's constant extra memory.
I understand completely that O(nlog(n)) is worse (slower) than O(n).
But out of curiosity - what could be a O(nlog(n)) algorithm for inverting a simply linked list? An algorithm with constant extra memory is preferable.