递归法----我不理解,但我大受震撼

 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */


struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    if((pHead->next == NULL) | (pHead == NULL))
    {
        return pHead;
    }
    struct ListNode* newhead = ReverseList(pHead->next);
    pHead->next->next = pHead;
    pHead->next = NULL;
    return newhead;
}