Oracle interview question

Write an algorithm to reverse a single linked list.

Interview Answers

Anonymous

15 Feb 2016

class ListNode { public: int val; ListNode* next; ListNode(int x) { val=x; next=NULL; }; }; class Solution { public : ListNode* ReverseList(ListNode* A) { stack s; ListNode* temp=A,*ans; while (temp!=NULL) { s.push(temp); temp=temp->next; } temp=s.top(); s.pop(); ans=temp; while(!s.empty()) { temp->next=s.top(); temp=s.top(); s.pop(); } temp->next=NULL; return ans; } };

Anonymous

26 Jun 2016

using System; using System.Collections.Generic; public class Test { public static void Main() { var linkedList = new LinkedList(); linkedList.AddLast(1); linkedList.AddLast(3); linkedList.AddLast(5); var stack = new Stack(); var reversedLinkedList = new LinkedList(); Console.WriteLine("Linked List: "); var currNode = linkedList.First; while(currNode != null){ stack.Push(currNode.Value); Console.WriteLine(currNode.Value); currNode = currNode.Next; } while (stack.Count > 0) reversedLinkedList.AddLast(stack.Pop()); Console.WriteLine("Reversed List: "); currNode = reversedLinkedList.First; while(currNode != null){ Console.WriteLine(currNode.Value); currNode = currNode.Next; } } }