剑指offer——24. 反转链表 发表于 2020-02-15 | 分类于 算法 , 剑指offer | 字数统计: 249 | 阅读时长 ≈ 1 剑指offer刷题 24. 反转链表NowCoder 解题思路递归123456789101112131415161718192021222324/**递归方案https://blog.csdn.net/fx677588/article/details/72357389*//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { //边界 if(!head || !head->next) return head; //递归到倒数第二个节点 head为倒数第二个节点 ListNode* p = reverseList(head->next); //head->next = nullptr时返回 head->next->next = head; head->next = nullptr; return p ; }}; 迭代使用头插法。 1234567891011121314151617181920212223242526272829303132333435363738394041424344/*思路:交换节点:定义节点 pCurr = head:用于遍历 pPre = nullptr :保存前一个节点pNext: 实时更新pCurr的下一个节点交换:whlie(pCurr){ ListNode* pNext = pCurr->next; pCurr->next = pPre; //当前指向前一个 pPre = pCurr; pCurr = pNext;}**//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if(!head || !head->next) return head; ListNode *pCurr = head; ListNode *pPre = nullptr; ListNode *pNext = nullptr; while(pCurr) { pNext = pCurr->next; pCurr->next = pPre; pPre = pCurr; pCurr = pNext; } return pPre; }}; 创作不易,欢迎打赏! 打赏 微信支付 支付宝 -------------本文结束感谢您的阅读-------------