太原适合网站设计地址,小型个人网站制作,郑州嵌入式培训机构,wordpress大学视频教程题目 反转一个单链表。 
示例: 
输入: 1-2-3-4-5-NULL 输出: 5-4-3-2-1-NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题#xff1f; 
迭代双指针 
从某公众号#xff08;代码随想录#xff09;搬过来的gif图2-3-4-5-NULL 输出: 5-4-3-2-1-NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题 
迭代双指针 
从某公众号代码随想录搬过来的gif图看了能很好地理解转置的过程  
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* pre  nullptr;ListNode* cur  head;ListNode* tmp;while(cur ! NULL){//临时结点暂存当前节点的下一个节点用于后移tmp  cur-next;//当前节点指向它前面的节点完成转置cur-next  pre;//前指针后移pre  cur;//当前指针后移cur  tmp;}return  pre;}
};递归解 
递归思路  递归动态图  主要思路 head 的下一个节点指向head 具体实现步骤过程见 https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/ 
递归模板; 
class Solution {
public:ListNode* reverseList(ListNode* head) {//终止条件//终止条件是当前节点或者下一个节点null//终止条件为何是这个第一个head是null防止一开始传入的就是空指针//若一开始传入的就是空指针则会返回空指针//若一开始传入的是headnull则会直接返回head//若一开始传入的是headnode2...null,则正常递归返回if(head NULL || head-next  NULL){return head;}//调用递归逻辑//在函数内部改变节点的指向也就是 head 的下一个节点指向 head 递归函数ListNode* cur  reverseList(head-next);head-next-next  head;//防止链表循环需要将head.next设置为空此时原来的head变为尾部head-next  NULL;return cur;}
};