我的Java数据结构学习-4---链表

链表:

 

 单链表分析:

 

 Java代码实现:

1.节点对象:

复制代码
package Demo1.LinkeList;

public class HeroNode {
    //
    public int no;//编号
    public String name;//名字
    public String nickName;//昵称
    public  HeroNode next;//指向下一个节点
    //构造器
    public HeroNode(int no, String name, String nickName) {
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", nickName='" + nickName + '\'' +
                ", next=" + next +
                '}';
    }
}
复制代码

2.链表对象:

复制代码
package Demo1.LinkeList;

public class SingleLinkedList {
    //节点对象 heroNode

    //初始化头节点,一般不会动他
    private HeroNode headNode = new HeroNode(0, "", "");

    //添加节点到单向链表
    public void addNode(HeroNode heroNode) {
        //不考虑编号顺序时候,找到当前链表的最后节点,将最后的节点的next域 指向新节点
        //因为head不能动,需要辅助指针(遍历链表)
        //System.out.println(heroNode);
        HeroNode temp = headNode;
        //遍历链表,找到当前链表的最后一位
        while (true) {
            //什么时候说明链表已经遍历到最后了,如果temp.next = null
            if (temp.next == null) {
                break;
            }
            //如果没有找到最后,temp的指针next域一致后移。
            temp = temp.next;
        }
        //退出while循环时,temp一定指向链表的最后
        temp.next = heroNode;
       // prinfList();

    }
    //显示链表信息【遍历打印链表】
    public void prinfList(){
        //判断链表是不是为空
        if (headNode.next ==null){
            System.out.println("链表为空::!!");
            return;
        }
        //头节点不能动,同样需要辅助遍历
        HeroNode temp = headNode.next;
        while (true){
            //判断链表是否是最后一个
            if (temp ==null){
                break;
            }
            //如果不为空
            System.out.println(temp);
            //还需要将temp后移,一定
            temp =temp.next;
        }
    }


}
复制代码

3.测试链表:

复制代码
package Demo1.LinkeList;

public class LinkedListTest {
    //测试

    public static void main(String[] args) {
        //准备数据,创建几个节点。
        HeroNode heroNode1 = new HeroNode(1, "顺悟空", "孙行者");
        HeroNode heroNode2 = new HeroNode(2, "郭童", "白嫖当");
        HeroNode heroNode3 = new HeroNode(3, "李四", "隔壁老李");
        HeroNode heroNode4 = new HeroNode(4, "王五", "隔壁老五");
        //创建链表
        SingleLinkedList singleLinkedList = new SingleLinkedList();
        //将节点加入链表
        singleLinkedList.addNode(heroNode1);
        singleLinkedList.addNode(heroNode2);
        singleLinkedList.addNode(heroNode3);
        singleLinkedList.addNode(heroNode4);
        //显示单链
        singleLinkedList.prinfList();
    }
}
复制代码

测试结果:

HeroNode{no=1, name='顺悟空', nickName='孙行者', next=HeroNode{no=2, name='郭童', nickName='白嫖当', next=HeroNode{no=3, name='李四', nickName='隔壁老李', next=HeroNode{no=4, name='王五', nickName='隔壁老五', next=null}}}}


HeroNode{no=2, name='郭童', nickName='白嫖当', next=HeroNode{no=3, name='李四', nickName='隔壁老李', next=HeroNode{no=4, name='王五', nickName='隔壁老五', next=null}}}

HeroNode{no=3, name='李四', nickName='隔壁老李', next=HeroNode{no=4, name='王五', nickName='隔壁老五', next=null}}

HeroNode{no=4, name='王五', nickName='隔壁老五', next=null}

 

 

posted on   白嫖老郭  阅读(100)  评论(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
点击右上角即可分享
微信分享提示