/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    struct ListNode* nhead=NULL;//新的头结点
    struct ListNode* nex=pHead;//指向的下一个节点
    while (pHead) {

        nex=pHead->next;
        pHead->next=nhead;
        nhead=pHead;
        pHead=nex;
    }
    return nhead;

}

需要两个节点,一个指向当前节点的下一个节点,一个指向反转后的新链表的头结点。

最开始反转链表没有,头结点指向NULL,

1.首先要获取当前节点的下一个节点,那么这个节点的next就没用啦,

2.可以修改了,改为反转链表的上一个的头结点的地址。

3.然后新的头结点就是当前这个节点了,

4.这个节点修改完了,继续修改下一个节点。