struct ListNode* ReverseList(struct ListNode* pHead ) { // write code here //算法的核心是 遍历每一个节点,保存好节点的next 并把next指向上一个node //注意防止传个空指针进来,或者链表只有一个节点 struct ListNode *nextNode = NULL; struct ListNode *currectNode = NULL; struct ListNode *lastNode = NULL; if (pHead == NULL || pHead->next == NULL) { return pHead; } currectNode = pHead; while (currectNode != NULL) { nextNode = currectNode->next; //保存当前节点的下一个节点 currectNode->next = lastNode; //当前节点的next指向上个节点 lastNode = currectNode; //更新lastNode 为下次循环准备 if (nextNode != NULL) { currectNode = nextNode; //非空 走向下个节点 } else { return currectNode; } } return currectNode; }