链表相关-反转链表
反转链表
1.LeetCode原题地址
2.解法思路一:采用迭代的方式,采用双指针进行遍历,prev先行,cur后行,最后返回cur节点,思路如下
- head节前进一步,保留原next的引用
- prev节点next指向cur节点,此处cur节点初始状态时清空引用,无需判空,博主写代码有这种习惯,但后面导致逻辑错误
- cur节点前进一步
- prev节点前进一步,赋值head节点的引用
- 遍历直到prev节点跑完整个流程
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int val=0, ListNode next=null) {
* this.val = val;
* this.next = next;
* }
* }
*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode prev = head;
ListNode cur = default;
while(prev != default){
head = head.next;
//if(cur != null)不能加,博主写代码有这种习惯,导致后面逻辑错误
prev.next = cur;
cur = prev;
prev = head;
}
return cur;
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雪夜の自我救赎!
评论
ValineDisqus