Ejemplo n.º 1
0
int main(int argc, char **argv) {
  List *head = create_iter(6);

  List *revd = reverse_recur(head);

  return 1;
}
Ejemplo n.º 2
0
//------------------------------------------------------------------
// Reverse the list recursively.
//------------------------------------------------------------------
void reverse_recur(struct node **head, struct node *current){
  struct node *prev;
  if(current->n_link == NULL ){
    current->p_link = NULL;
    *head = current;
    return;
  }
  reverse_recur(head, current->n_link); // Recursive call.
  prev = current->n_link;               // Save current node's n_link.
  prev->n_link = current;               // Set previous node's n_link to current node.
  current->p_link = prev;               // Set current node's p_link to current node's n_link.
  current->n_link = NULL;               // Set current node's n_link to NULL.
}
Ejemplo n.º 3
0
// reverses a list recursively
// (each node is appended to the end
// of its reversed tail)
// RinetzkySagiv01: rev_app
List* reverse_recur(List* head) {
  List *reversed;

  if (head == NULL) {
    return NULL;
  }

  reversed = reverse_recur(head->n);

  head->n = NULL;
  reversed = app_iter(reversed,head);

  return reversed;
}