LeetCode反转链表

改变头结点代码:

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode prev=null;  //定义一个空结点,表示反转之后
        while(head!=null){
            ListNode next=head.next;  //定义头结点的下一个结点
            head.next=prev;   //反转链表
            prev=head;   // prev前进
            head=next;  //head 前进
        }
        return prev;
        
    }
}

不改变头节点代码:

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        /*改变head
        ListNode prev=null;  //定义一个空结点,表示反转之后
        while(head!=null){
            ListNode next=head.next;  //定义头结点的下一个结点
            head.next=prev;   //反转链表
            prev=head;   // prev前进
            head=next;  //head 前进
        }
        return prev;
        */
        ListNode current=head; //用current代替head,head表示不变
        ListNode prev=null;  //定义一个空结点,表示反转之后
        while(current!=null){
            ListNode next=current.next;
            current.next=prev;
            prev=current;
            current=next;
        }
        return prev;
        
    
        
    }
}
相关推荐
daad77710 小时前
V4L2_mipi-csi
算法
2301_7657031411 小时前
C++代码复杂度控制
开发语言·c++·算法
m0_7088309611 小时前
C++中的享元模式实战
开发语言·c++·算法
naruto_lnq11 小时前
分布式计算C++库
开发语言·c++·算法
m0_7066532311 小时前
模板编译期排序算法
开发语言·c++·算法
历程里程碑11 小时前
Linxu14 进程一
linux·c语言·开发语言·数据结构·c++·笔记·算法
木井巳11 小时前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
m0_5613596711 小时前
嵌入式C++加密库
开发语言·c++·算法
近津薪荼11 小时前
优选算法——双指针专题7(单调性)
c++·学习·算法
j4455661111 小时前
C++中的职责链模式实战
开发语言·c++·算法