struct ListNode* ReverseList(struct ListNode* pHead ) { struct ListNode* p = NULL; struct ListNode* q = pHead; struct ListNode* r; while(q != NULL){ r = q->next; //这一步必须在前面,以防止断链 q->next = p; //从旧链表拆一个结点下来指向新链表的链头结点 p = q; //新链表的链头指针指向新插入的结点q q = r; //指针返回旧链表,准备拆下一个结点 } return p; //p指向新链表的链头结点 }