Interview Question

Software Engineer Interview



Reverse a linked list without using temporary variables.

AnswerAdd Tags

Interview Answers

5 Answers


I was nervous and didn't answer it well. I should have done better if I calmed down a little.

Anonymous on


public static void ReverseNode(Node n) { if (n.Next == null || n.Next == n) return; ReverseNode(n.Next) n.Next.Next = n n.Next = null }

Anonymous on


pair reverse(Node* current){ if (current->next == NULL) return make_pair(current, current); auto result = reverse(current->next); result.second->next = current; current->next = NULL; return make_pair(result.first, current); }

Time cost should be O(N) on


Steve L. : Clever, but the question didn't specify a linked list of positive integers…but that trick, I _think_, could be used for the pointers in a language that used them.

Empty Set on


The above doesn't work since n will be pointing at the last element in the end. It should still point at the start. This should work: void reverse(Node lis) { if (lis == null) { return; } if ( == null) { return; } reverse(; while ( != null) { lis.val = lis.val ^; = lis.val ^; lis.val = lis.val ^; lis =; } }

Steve L. on

Add Answers or Comments

To comment on this, Sign In or Sign Up.