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;
}