和官方题解思路是一样的,但是细节上的思想不同,但也AC了
关键是三个
1.要将上一个结点存起来
2.要有一个指针指向下一个结点
3.边界问题,要注意什么时候跳出循环
public ListNode reverseList(ListNode head) {
/** 如果该链表为空 或者 为一个结点*/
if (head == null || head.next == null){
return head;
}
/** 定义一个临时结点temp,用来存放上一个结点*/
ListNode temp = null;
/** 两个指针,一个当前 ,一个下一个*/
ListNode curr = head;
ListNode next = head.next;
/** 开始反转,next为空时,结束*/
while (next != null){
curr.next = temp;/** 当前结点.next ——> 上一个结点temp*/
temp = curr;/** 然后temp赋值为当前结点*/
curr = next;/** 两个指针后移*/
next = next.next;
}
/** 将最后一个结点指向上一个结点*/
curr.next = temp;
return curr;
}

本文详细介绍了如何使用迭代法实现链表的反转,重点强调了三个关键步骤:保存前一个节点、更新节点指针以及处理边界条件。通过这个过程,链表可以被有效地反转,代码简洁且已通过所有测试用例。
672

被折叠的 条评论
为什么被折叠?



