数据结构:循环链表
创作时间:
作者:
@小白创作中心
数据结构:循环链表
引用
CSDN
1.
https://m.blog.csdn.net/2302_80795993/article/details/144679198
数据结构是Java语言学习中的重要组成部分,其中循环链表是一个常见的数据结构。循环链表的特点是链表中的最后一个节点指向链表的头节点,形成一个闭环。与普通链表不同的是,循环链表中的快慢指针终将相遇,这一特性使得循环链表能够实现无限遍历循环的功能。
下面是一个循环链表的Java代码实现示例:
package Linear;
public class CircleListCheckTest {
public static void main(String[] args) throws Exception {
// 创建结点
CircleListCheckTest.Node<String> first = new CircleListCheckTest.Node<>("aa", null);
CircleListCheckTest.Node<String> second = new CircleListCheckTest.Node<>("bb", null);
CircleListCheckTest.Node<String> third = new CircleListCheckTest.Node<>("cc", null);
CircleListCheckTest.Node<String> fourth = new CircleListCheckTest.Node<>("dd", null);
CircleListCheckTest.Node<String> fifth = new CircleListCheckTest.Node<>("ee", null);
CircleListCheckTest.Node<String> six = new CircleListCheckTest.Node<>("ff", null);
CircleListCheckTest.Node<String> seven = new CircleListCheckTest.Node<>("gg", null);
// 完成结点之间的指向
first.next = second;
second.next = third;
third.next = fourth;
fourth.next = fifth;
fifth.next = six;
six.next = seven;
// 产生环
seven.next = third;
// 判断链表是否有环
boolean circle = isCircle(first);
System.out.println("first链表中是否有环: " + circle);
}
public static boolean isCircle(Node<String> first) {
// 定义快慢指针
Node<String> fast=first;
Node<String> slow=first;
// 遍历链表
while(fast!=null && fast.next!=null){
fast=fast.next.next;
slow=slow.next;
if (fast.equals(slow)){
return true;
}
}
return false;
}
private static class Node<T> {
// 存储数据
T item;
// 下一个结点
CircleListCheckTest.Node<T> next;
public Node(T item, CircleListCheckTest.Node<T> next) {
this.item = item;
this.next = next;
}
}
}
这段代码首先创建了多个节点,并通过指针将它们连接起来形成一个链表。然后,通过将最后一个节点的next指针指向链表中的某个中间节点,形成了一个环。最后,通过快慢指针的方法判断链表中是否存在环。
热门推荐
多轮对话中让AI保持长期记忆的8种优化方式(附案例和代码)
太多人忽略了缺牙对身体的影响,原来这些身体问题和牙齿息息相关
缺牙对身体会有哪些不良影响?了解缺牙修复的必要性
奇门遁甲中的阴阳五行理论
如何制定每周工作计划
GB 4806.1-2016:陶瓷食品接触材料的性能指标与使用条件详解
客户异议处理不当的场景模拟怎么做?
销售管理如何实现客户关系深化?
幼儿园教育和小学教育的区别是什么
柔光屏和标准屏哪个好?
如何有效引导学校中好动孩子的行为和情绪
Mac系统办公真的不如Windows系统好吗?
Mac电脑与Windows电脑(探索两种操作系统的不同特点和适用场景)
质量管理系统如何提升跨部门协作效率?
项目经理如何提升项目质量
穴位按摩秘籍:焕活肌肤光彩,重塑无瑕美肌
硬盘怎么备份手机照片
如何设置服务器以防止刷怪行为?
哲学家大卫·本特利·哈特的著作《万物皆有神明》简介
洛阳旅游攻略:五大景点深度游
饭后4个坏习惯伤胃!胃反酸、烧心困扰不断,3招教你轻松缓解
脂肪肝6大原因及改善办法!
如何撰写高效的部门合作备忘录?【深度解析】
图说超线程技术(Hyper-Threading Technology)
影响微量粘度计测定结果的因素有什么?
脉搏跳动的节奏:66次/分钟是否正常?
为何高能量人群总是魅力四射?
Excel筛选和分类汇总功能使用指南
梅龙高铁探营:预计9月底具备开通条件 兴宁南站造型如“花灯”
优良的蔬菜种子有何标准,应具备纯、壮、良的优点