题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { ListNode* ptem = nullptr; //辅助指针 ListNode* pnow = pHead; //当前指针 ListNode* pnex = nullptr; //当前的下一个位置 指向空是为了防止pnow为空 while (pnow) { /*************初始位置**************************/ // pnow pnex->[nullptr] ptem->[]nullptr] // | // v // [1]->[2]->[3]->[4] pnex = pnow->next; /*************pnow不空pnex赋值*******************/ // pnow pnex ptem->[]nullptr] // | | // v v // [1]->[2]->[3]->[4]->[nullptr] pnow->next = ptem; /*************pnow->next反转*******************/ // pnow pnex // | | // v v // [1] [2]->[3]->[4]->[nullptr] // | // v //ptem->[nullptr] ptem = pnow; /*************ptem移动到pnow位置****************/ // pnow pnex // | | // v v // ptem->[1] [2]->[3]->[4]->[nullptr] // | // v // [nullptr] pnow = pnex; /*************pnow前进************************/ // pnex // | // v // ptem->[1] pnow->[2]->[3]->[4]->[nullptr] // | // v // [nullptr] //新一轮循环 } return ptem; } };#每日一练#