扭转链表的两个函数之间的区别......为什么一个工作而另一个不工作?

时间:2015-10-07 04:59:03

标签: reverse singly-linked-list

链接列表下方的注释描述是两个应该反转单链表的函数。第一个是正确的,第二个是错的。我的问题是两者有什么区别?在我眼里,我觉得他们正在做同样的事情。我知道区别在于一行,我只是不知道该行的不同之处。任何帮助将不胜感激。

谢谢!

/*
  Reverse a linked list and return pointer to the head
  The input list will have at least one element  
  Node is defined as 
  struct Node
  {
     int data;
     struct Node *next;
  }
*/

正确执行:

Node* Reverse(Node *head)
{
    if (head->next == NULL) {
        return head;
    }
    else {
        Node* blah = Reverse(head->next);
        head->next->next = head;
        head->next = NULL;
        return blah;
    }
}

不正确的实施:

Node* Reverse(Node *head)
{
    if (head->next == NULL) {
        return head;
    }
    else {
        Node* blah = Reverse(head->next);
        blah->next = head;
        head->next = NULL;
        return blah;
    }
}

0 个答案:

没有答案