栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java之链表的反转

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java之链表的反转

反转API设计:

public void reverse():对整个链表反转

public Node reverse(Node curr):反转链表中的某个结点,并把反转后的curr结点返回

使用递归可以完成反转,递归反转其实就是从原链表的第一个存数据的结点开始,依次递归调用反转每一个结点,直到把最后一个结点反转完毕,整个链表就反转完毕。

反转方法:
     //反转整个链表
    public void reverse(){
        if(isEmpty()){    //判断当前链表是否为空链表,如果是空链表,则停止运行,否则调用重载的reverse方法完成反转
            return;
        }
        reverse(head.next);
    }



    //反转指定结点curr
    public Node reverse(Node curr){
        if(curr.next==null){
            head.next=curr;
            return curr;
        }
        //递归的反转curr结点的下一个结点,返回值就是链表反转后,当前结点的上一个结点
        Node pre=reverse(curr.next);
        //让返回节点的下一个节点变为当前节点curr
        pre.next=curr;
        //把当前节点的下一结点变为null
        curr.next=null;
        return curr;
    }
测试:
package cn.itcast.algorithm.linearTest;

import cn.itcast.algorithm.linear.linkList;

public class linkListTest2 {
    public static void main(String[] args) {

        linkList s1 = new linkList<>();
        //创建单链表表对象
        s1.insert("吴磊");
        s1.insert("ASD");
        s1.insert("Messi");
        s1.insert(1,"詹姆斯");
        for(String s:s1){
            System.out.println(s);
        }
        System.out.println("------------------------");

        System.out.println("反转后的链表:");
        s1.reverse();
        for(String q:s1){
            System.out.println(q);
        }
    }
}
测试结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号