经典面试题: java实现单链表翻转
日期: 2020-12-13 分类: 跨站数据测试 359次阅读
经典面试题: java实现单链表翻转
思路分析:
单链表的翻转,我们抽象来看,其实就是将每个节点的next 指向他的前一个节点,那么我们从第一个节点开始翻转,将第一个节点的next指向null,把第二个节点的next 指向第一个节点,第三个节点的next指向 第二个节点。。。。。
这里需要使用三个辅助节点: pre :翻转节点的前一个节点,cur: 当前需要翻转的节点,next:翻转节点的下个节点
public class ListReverse {
public ListNode reverseList(ListNode head) {
//初始化pre为null,让第一个节点首先指向null
ListNode pre = null;
//cur就是我们当前需要翻转的节点,将该节点的next指向他的前一个节点
ListNode cur = head;
while (cur !=null){
//需要先将当前的节点的next拿到,否则我们直接翻转的话
//就让后面的节点断开练习了
ListNode next = cur.next;
//进行翻转
cur.next = pre;
//上面的步骤指向完,一个节点翻转完成,我们需要为
//下一次的翻转做准备,将pre指向往后移一位
pre = cur;
//让cur指向next,下一次就要翻转你了
cur = next;
}
return pre;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
图解; 第一个行是第一次 翻转,第二行是第二次翻转。
val = x;
}
}
图解; 第一个行是第一次 翻转,第二行是第二次翻转。

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:数据结构和算法 数据结构
精华推荐