我的Java数据结构学习-4-3---链表 (大厂面试题)

 

 

 

 

复制代码
//获取到单链表节点的有效个数(带头结点的需要不统计头节点)
    public int getLinkedLength(HeroNode head) {
        if (head.next == null) {//空链表
            return 0;
        }
        int length = 0;
        //定义一个辅助指针,不要统计头节点。
        HeroNode cur = head.next;
        while (cur != null) {
            length++;
            cur = cur.next;//遍历
        }
        return length;
    }

    //查找单链表的倒数第K个节点。
    public HeroNode getLastIndexNode(HeroNode head, int LastIndex) {
        if (head.next == null) {
            return null;//没有找到
        }
//得到链表长度(有效个数)
        int size = getLinkedLength(head);
//倒数转换为顺序数
        if (LastIndex <= 0 || LastIndex > size) {
            return null;//找不到
        }
        HeroNode temp = head.next;
        for (int i = 0; i < size - LastIndex; i++) {
            temp = temp.next;
        }
        return temp;


    }

    //链表节点反转
    public void reverseLinkedList(HeroNode head) {
        //当前链表为空,或者只有一个节点,无需反转
        if (head.next == null || head.next.next == null) {
            return
                    ;
        }
        HeroNode cur = head.next;
        HeroNode nextNode = null;//指向当前节点的下一个节点。
        HeroNode reverseHead = new HeroNode(0, "", "");
        //遍历原来的链表,并取出存放在新的链表里面(reverseHead)
        while (cur != null) {
            nextNode = cur.next;//保存当前节点的下一个节点。
            cur.next = reverseHead.next;//将cur的下一个系欸但指向新的链表的头部。
            reverseHead.next = cur;
            cur = nextNode;
        }
        //将head。next指向reverseNde
        head.next = reverseHead.next;

    }
复制代码

链表逆序打印:采用栈机制()

复制代码
//使用栈stack(后进先出),逆序打印
    public void reversePrintf(HeroNode head) {
        if (head.next == null) {
            System.out.println("空链表不能打印");
            return;
        }
        Stack<HeroNode> stack = new Stack<>();
        HeroNode cur = head.next;
        //将链表的所有节点压入栈
        while (cur != null) {
            stack.push(cur);//压入
            cur = cur.next;//指针后移
        }
        //遍历将栈中的节点打印()pop
        while (stack.size() > 0) {
            System.out.println(stack.pop());//出栈打印
        }
    }
复制代码

 

posted on   白嫖老郭  阅读(89)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示