链表面试题------ Java逆置链表

本文详细解析了逆置链表的实现思路及代码,通过遍历原链表并使用头插法将节点插入到结果链表中,最终实现链表的逆置。代码示例清晰,便于理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:逆置链表

思路:

1.result ------->  结果链表
	cur -------->用来遍历原链表的
1.遍历整个链表 取出节点 cur
2. 把 取出来的 节点 cur 头插到 结果链表 result 上

代码:

1.定义节点代码

public class Node {
    int val;
    Node next = null;

    Node(int val){
        this.val = val;
    }

    //打印链表
    @Override
    public String toString() {
        return String.format("Node(%d)",val);
    }
}

逆置链表代码:

public class Practice2 {
    public static Node reverse(Node head){
        //遍历链表
        Node cur = head;
        //结果链表
        Node result = null;
        while(cur != null){
            //因为后面改变了 cur.next 所指向的元素,
            // 所以需要提前记录 cur 的 下一个元素
            Node next = cur.next;
            //把 cur 头插 到 result 上
            cur.next = result;
            result = cur;
            cur = next;
        }
        return result;
    }

    //测试方法   创建一个链表
    private static Node test(){
        Node n1 = new Node(1);
        Node n2 = new Node(2);
        Node n3 = new Node(3);
        Node n4 = new Node(4);
        n1.next = n2;
        n2.next = n3;
        n3.next = n4;
        return n1;
    }

    public static void main(String[] args) {
        Node head = reverse(test());
        for(Node cur = head;cur != null;cur = cur.next){
            System.out.println(cur);
        }
    }
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值