Reversing linked list iteratively and recursively

void reverse(Node*& head) {
  if (!head) return;
  Node* prev = NULL;
  Node* curr = head;
  while (curr) {
    Node* next = curr->next;
    curr->next = prev;
    prev = curr;
    curr = next;
  }
  head = prev;
}

void reverse(Node*& p) {
  if (!p) return;
  Node* rest = p->next;
  if (!rest) return;
  reverse(rest);// reverse 之后rest是新list的头
  p->next->next = p; //p 之后第一个element的next要指回 p
  p->next = NULL;
  p = rest;
}

REF:

Comapny:google

results matching ""

    No results matching ""