链表算法一(单向链表翻转)

已知单向链表,让链表实现翻转

实现思路 : 单向链表A – > B – > C – > D,只要调换每个节点的上下节点位置即可实现翻转,但是单向链表翻转位置后下一个节点都是空的,但是实际上下一个节点的位置就是下一个节点的上一个节点位置,Emmm…听起来有点像废话,但实际上下一个节点位置的上一个节点位置是已知的,但是反转后当前节点的下一个节点位置是未知的… 可能描述的不是太清楚,直接上图在这里插入图片描述
代码如下 :

public class Node {
    private Integer value;
    private Node pre;
    private Node next;

    public Node(Integer value) {
        this.value = value;
    }

    public Node getPre() {
        return pre;
    }

    public void setPre(Node pre) {
        this.pre = pre;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }

    /**
     * 思路就是把现在的head的上下节点调换位置
     *
     * @param head 单向链表
     * @return 转换后的链表
     */
    public static Node reverseLinkedList(Node head) {
        Node pre = null;
        while (head != null) {
            // 获取上一个节点
            Node next = head.getNext();
            // 设置下一个节点的位置为上一个节点
            head.setNext(pre);
            // 因为head下一个节点的上一个节点(pre)为null 所以需要提前设置
            // 实际上下一个节点的上一个节点不就是自己吗!!!
            pre = head;
            // 遍历下一个节点
            head = next;
        }
        return pre;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值