双链表思想

struct ListNode* ReverseList(struct ListNode* pHead ) {
    //创建一个新的列表
    struct ListNode* newHead=NULL;
    //创建一个临时节点
    struct ListNode* temp=NULL;
    while(pHead!=NULL){
        //将原链表的头指针保存到临时列表中
        temp=pHead->next;
        //将新链表挂在
        pHead->next=newHead;
        //将新链表更新
        newHead=pHead;
        pHead=temp; 
    }
    //每次访问原链表节点 会成为新链表的头结点
    return newHead;   
}