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

/**
 * 
 * @param pHead ListNode类 
 * @return ListNode类
 */
 typedef struct ListNode LNode ;
struct ListNode* ReverseList(struct ListNode* pHead ) {
    // write code here
    LNode *thisNode = pHead;
    LNode *priorNode = NULL;
    while(thisNode) {
        LNode *tempNode = thisNode->next;
        thisNode->next = priorNode;
        priorNode = thisNode;
        thisNode = tempNode;
    }
    return priorNode;
}

两张解法:

双指针和递归法。

以上是双指针的代码。