Pergunta de entrevista da empresa Meta

Output a single linked list in reverse, in linear time and constant space, and recursively

Respostas da entrevista

Sigiloso

10 de nov. de 2010

void recursive_reverse(nodeptr inlist) { if (inlist->next == NULL) { printf(" %d ", inlist->value); return; } recursive_reverse(inlist->next); printf(" %d ", inlist->value); }

11

Sigiloso

28 de dez. de 2010

here it is a java code for reversing a linked list recursively Node reverse(Node head) { return reverse(head,null); } Node reverse(Node head,Node tail) { Node tmp = head.next; head.next = tail; tail = head; if (tmp == null) return head; head = tmp; return reverse(head,tail); }

5

Sigiloso

9 de out. de 2011

Reversing it recursively always needs at least O(n) space in memory.

6

Sigiloso

4 de nov. de 2011

def reverse(lst): if not lst or len(lst) == 1: return lst else: return reverse(lst[1:]) + [lst[0]]

Sigiloso

13 de fev. de 2011

void revis(Node*node, Node* ptr){ if(node==null)return; revis(node->next,node); node->next=ptr; }

1