单链表的反转

package singlelist;
//结点类
public class Node {
    //用于保存结点中的数据
    private Object data;
    //用于保存下一个结点的地址值
    private Node next;

    /**
     * data做初始化工作
     * @param data
     */
    public Node(Object data) {
        this.data = data;
    }

    /**
     * data next 初始化
     * @param data
     * @param next
     */
    public Node(Object data, Node next) {
        this.data = data;
        this.next = next;
    }

    public Object getData() {
        return data;
    }

    public Node getNext() {
        return next;
    }

    public void setData(Object data) {
        this.data = data;
    }

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

package singlelist;

public class Test {
    public static void main(String[] args) {
        //创建单链表
        Node lastNode = new Node(44);
        Node node3 = new Node(33,lastNode);
        Node node2 = new Node(22,node3);
        Node headNode = new Node(11,node2);
        System.out.print("反转之前的单链表:");
        print(headNode);
        System.out.println();
        System.out.print("反转之后的单链表:");
        Node reverse = reverseLinkedList(headNode);
        print(reverse);
    }

    /**
     * 实现单链表的遍历操作
     * @param headNode
     */
    public static void print(Node headNode){
        //1.定义一个临时结点,用于辅助单链表的遍历操作
        Node tempNode = headNode;
        //2.定义一个循环,用于循环单链表的遍历操作
        while (tempNode!=null){
            System.out.print(tempNode.getData()+" ");
            //4.让tempNode指向下一个结点
            tempNode = tempNode.getNext();
        }
    }

    /**
     * 实现单链表的首节点
     * @param headNode 需要反转单链表的首节点
     * @return 反转之后链表的首节点
     */
    public static Node reverseLinkedList(Node headNode){
        //1.判断headNode为null。或者只有一个结点
        if (headNode==null||headNode.getNext()==null){
            return headNode;
        }
        //2.定义一个结点,用于保存反转之后的链表的首节点
        Node reverse = null;
        //3.定义一个循环实现反转
        while (headNode!=null){
            //4.获取headNode的下一个结点
            Node nextNode = headNode.getNext();
            //5.把headNode插入反转后链表的最前面
            headNode.setNext(reverse);
            //6.更新反转后链表的首节点
            reverse = headNode;
            //7.更新需要反转列表的首节点
            headNode = nextNode;
        }
        //8.返回反转后链表的首节点
        return reverse;
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值