题目描述:输入一个链表,反转链表后,输出新链表的表头
先记录下👴痛苦的学习过程
我的思维对于循环定义的数据结构似乎一直很抗拒,当初在大学学习数据结构的时候,面对C语言定义的链表枯坐数小时还是想不通CURD操作,属实🥬得不行
现在毕业了,要找工作,当时没解决的问题现在又挡在面前,现在是退无可退了
分析过程
其实尝试了,好多种办法
纯靠脑子想我是真的不行(至少现在不行),所以用我的平板+电子笔画一画
开始
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
// 判断链表为空或长度为1的情况
if(head == null || head.next == null){
return head;
}
ListNode pre = null; // 当前节点的前一个节点
ListNode next = null; // 当前节点的下一个节点
while( head != null){
next = head.next; // 记录当前节点的下一个节点位置;
head.next = pre; // 让当前节点指向前一个节点位置,完成反转
pre = head; // pre 往右走
head = next;// 当前节点往右继续走
}
return pre;
}
}