四-下, Java实现 单向循环链表 1
四-下, 单向循环链表
4.0 定义和概念
-
单链表的指针域只存储了向后的指针,到了尾结点就无法继续向后的操作。
-
本篇文章将介绍单向循环链表,它和单链表的区别在于末尾结点的指针域不是指向null,而是指向头结点,形成首尾相连的环。这种首尾相连的单链表称为单向循环链表。循环链表可以从任意一个结点出发,访问到链表中的全部结点。
-
和单链表一样,为了使空链表与非空链表处理一致,我们通常会设置一个头结点。当然,之前提到的单链表和本文的单向循环链表都不是必须要有头结点,只是为了简化操作。
-
单向循环链表的查找、删除和修改操作与单链表一致(这里不在赘述,可参考前面的文章),插入操作和单链表有所不同,单向循环链表需要维持环状结构。
-
判断单链表为空的条件是head.next == null,而判断单向循环链表为空的条件为head.next == head
。 -
单向循环链表初始化时,头结点的next域指向自身,形成环状结构。
4.1 单向循环链表的应用–约瑟夫问题
N个人围成一个环,选取一个正整数M(<n)作为报数值。从第一个人开始按顺时针方向自1开始顺序报数,
报到m停止报数,报m的出列,下一个继续开始重新报数,直到环中只剩下一个为最后的优胜者。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)